1-. Conceptos sobre bases de datos
a) ¿Qué es una base de datos? b) Bases de datos relacional
c) Microsoft Access y OpenOffice Base
2-. Tablas
a) Tipos de datos posibles para los campos de una tabla b) Tipos de datos numéricos
c) Clave principal (clave primaria) d) Algunas propiedades de los campos e) Formato de tablas
3-. Relaciones entre tablas
a) Establecer una relación b) Integridad Referencial c) Actualizar en cascada d) Eliminar en cascada
4-. Consultas
a) Diseño de consultas
b) Consultas sobre una única tabla c) Consultas sobre varias tablas
d) Consultas con operadores de comparación e) Consultas con caracteres de comodín f) Consultas con totales
5-. Análisis relacional
a) ¿Qué es el Análisis Relacional? b) Un caso práctico
c) Aplicación de la técnica de análisis
i. Identificación de las entidades y de sus campos ii. Identificación de las relaciones
iii. Paso a tablas
6-. El proceso de creación de una base de datos
Tema 2
Apuntes de 2º de Bachillerato
1-. Conceptos sobre bases de datos
a) ¿Qué es una base de datos?
Una base de datos es un conjunto de información, de datos, que están agrupados siguiendo una determinada organización. Los elementos en los cuales se organizan los datos se denominan tablas.
Las empresas tienen bases de datos donde se almacena toda la información que necesitan para su funcionamiento: tendrán toda una tabla para los clientes, otra tabla para los proveedores, otra tabla para las facturas, para los albaranes, para los pedidos,...
Otro ejemplo: en un instituto toda la información estará almacenada en una base de datos, donde habrá diferentes tablas: alumnos, profesores, asignaturas, departamentos, etcétera. Y para cada elemento se guardan diferentes datos. Por ejemplo, en la tabla de alumnos se guardará el DNI, el nombre, la dirección, la fecha de nacimiento, la fecha de matriculación,...
Los registros son cada uno de los elementos de una tabla. Por ejemplo, la tabla anterior Alumnos tiene tres registros.
b) Base de datos relacional
Hoy en día la mayoría de las bases de datos son relacionales. Esto significa que se pueden establecer relaciones entre las distintas tablas. Por ejemplo, se puede forzar a que un alumno pueda matricularse de asignaturas de 2º de bachillerato sólo si tiene como mucho dos asignaturas pendientes de 1º de bachillerato.
c) Microsoft Access y OpenOffice Base
MS Access y OpenOffice Base son aplicaciones de base de datos. Nos permiten realizar todas las operaciones sobre la BD, como la creación de la BD, la creación de las tablas, la introducción de los datos, la realización de consultas para ver la información almacenada, etcétera, ... Además de estos dos programas existen otros programas para gestionar bases de datos como son Paradox, DBAse, Oracle, Informix, SQL/Server,…
Ambas son aplicaciones de “andar por casa”, es decir, para realizar bases de datos domésticas o de empresas pequeñas o medianas. Pero, cuando se quiere gestionar un gran volumen de datos se utilizan unas aplicaciones conocidas como SGBD, porque son más rápidas y más seguras. Por ejemplo, Oracle, Informix o SQL/Server. En empresas u organizaciones grandes se utilizan este tipo de aplicaciones (en el ayuntamiento de Valencia, por ejemplo,
Tabla alumnos
Expediente Nombre Apellidos Curso Repetidor
34200 Antonio Gómez Peiró 3º A No
35100 María Sánchez Torres 3º B Sí
35102 Sonia Miró Gisbert 3º D No
utilizarán una BD diferente de Access o Base para almacenar los datos de los vecinos).
Una aplicación de BD proporciona un entorno gráfico con una serie de herramientas para poder trabajar con los datos. Por ejemplo, en OpenOffice Base, tenemos:
Tablas: desde aquí podremos crear las tablas, borrarlas, modificarlas, así como insertar datos en su interior.
Consultas: una consulta nos permite recuperar información de una BD. Por ejemplo, en la BD del instituto habrán consultas para poder sacar un listado de los alumnos de un determinado grupo, para saber en un grupo cuántos alumnos promocionan, para saber cuántos alumnos tienen suspendidas las matemáticas, cuál es la nota media de un grupo, ...
Formularios: con los formularios podemos realizar operaciones sobre tablas (como insertar datos) con un entorno de mejor apariencia.
Informes: con los informes podemos mejorar el resultado de las consultas.
2-. Tablas
a) Tipos de datos posibles para los campos de una tabla
c) Clave principal (Clave primaria o llave primaria)
Con este nombre se conoce a aquel campo (o conjunto de campos) de una tabla que sirve para identificar a los registros. Si un campo está definido como clave primaria no podrá contener valores nulos ni valores repetidos.
Por ejemplo, el campo Código de la tabla Socios será la clave primaria de esa tabla, porque no puede haber dos socios con el mismo código ni tampoco puede haber un socio que no tenga ningún código asignado.
Un ejemplo muy evidente es el DNI. Si tuviéramos una tabla con los datos de muchas personas (nombre, sexo, edad, domicilio, teléfono,...), elegiríamos el
1
Con la propiedad Longitud podemos indicar el número máximo de caracteres
Tipos de datos Características
Texto [VARCHAR]1 Campo habitual de texto Nota [LONGVARCHAR] Máximo de 65.535 caracteres
Número [NUMERIC] Valores numéricos enteros, podrán realizarse operaciones matemáticas
Real [REAL] Valores numéricos reales Fecha [DATE] Campos de tipo fecha
Fecha [TIME] Campos de tipo hora
Sí/No [BOOLEAN] Sólo admite esos dos valores Imagen [LONGVARBINARY] Inserción de imágenes
DNI como clave principal ya que no puede haber dos personas con el mismo número de DNI ni una persona que no tenga este número.
d) Algunas propiedades de los campos
Valor predeterminado: esta propiedad permite que Access asigne un valor por defecto a ese campo. Por ejemplo, que en un campo Fecha aparezca la fecha de hoy, que en un campo numérico se escriba por defecto un 0, etcétera.
Entrada requerida: con esta propiedad estaremos obligando al usuario a que introduzca un valor en el campo. Si el campo se queda vacío Base mostrará un mensaje de error. Si queremos por ejemplo que el usuario tenga que escribir su dirección pondremos Requerido a Sí.
e) Formato de tablas
Si hacemos clic con el botón derecho del ratón sobre el cuadrado gris que hay a la izquierda de cualquier fila podremos entrar en Formateado de las filas. Desde aquí podemos cambiar, para todos los registros, el tipo de letra, el tamaño o el color de la misma.
Además, desde Altura de la fila se podrá modificar la altura de todas las filas de la tabla.
Se pueden ocultar columnas desde el menú emergente al hacer clic sobre las columnas con el botón derecho del ratón. Para volver a mostrarlas también haremos clic con el mismo botón.
3-. Relaciones entre tablas
a) Establecer una relación
Cuando se quiere mostrar información (mediante una consulta o un informe) de dos tablas distintas es necesario previamente crear una relación entre ellas. Pero dos tablas sólo se podrán relacionar si existe un campo común entre ambas. Libros IdLibro Título Autor Editorial Año
En el ejemplo anterior se pueden establecer dos relaciones:
Entre la tabla Libros y la tabla Préstamos, ya que tienen un campo común: los valores del campo IdLibro de la tabla Préstamos hacen referencia a los valores del campo IdLibro de la tabla Libros.
Entre la tabla Socios y la tabla Préstamos: los valores del campo IdSocio de la tabla Préstamos hacen referencia a los valores del campo IdSocio de la tabla Socios. Socios IdSocio Nombre Domicilio Localidad Fecha_nacimiento Fecha_alta Profesión Préstamos IdLibro IdSocio Fecha_préstamo Fecha_devolución
b) Integridad referencial
La integridad referencial es una restricción que se define sobre una relación. En OpenOffice Base todas las relaciones llevan incorporada la integridad referencial.
Los valores del Campo3 de la Tabla B tendrán que hacer referencia a valores que ya existan en el Campo1 de la Tabla A. En caso de que no haga referencia a un valor ya existente se impedirá la actualización. Esto implica que los registros de la Tabla A tendrán que ser introducidos antes que los registros de la Tabla B. De los dos campos relacionados, el campo que es clave primaria es el que contiene los valores a los que tienen que hacer referencia los campos relacionados de otras tablas.
Por ejemplo, al marcar la casilla de Exigir integridad referencial en la relación entre la tabla Libros y la tabla Préstamos, estamos obligando al usuario a que cuando introduzca un nuevo registro en la tabla Préstamos, el campo Libro tendrá que contener el código de un libro que ya exista en la tabla Libros. En caso de que introduzcamos un código que no exista en la tabla Libros se mostrará un mensaje de error y se impedirá la actualización.
La integridad referencial es un mecanismo que nos permite asegurar que los valores que estamos introduciendo son íntegros con los valores que ya existen. En el ejemplo anterior, nos aseguramos que al dar de alta un préstamo el código del libro introducido hace referencia a un libro que realmente exista. c) Actualizar en cascada los campos relacionados
Al cambiar el valor del Campo1 en un registro de la tabla A se actualizarán automáticamente en la tabla B los valores del Campo3 que hicieran referencia a ese valor.
d) Eliminar en cascada los campos relacionados
Tabla B CP: { Campo1 } Campo2 Campo3 Tabla A CP: { Campo1 } Campo2 Campo3 Tabla Libros IdLibro Título 10 El nombre de la rosa 20 El médico 30 El mundo de Sofía Tabla Préstamos
IdLibro IdSocio Fecha_préstamo
10 105 21/10/2004 20 105 21/10/2004 20 107 29/11/2004
Relación
Si cambiamos el código del libro El médico del 20 al 25, se actualizará en cascada los dos préstamos que hay con el código 20 (los de los socios 105 y 107) al nuevo valor 25.
Al eliminar un registro en la Tabla A se eliminarán automáticamente en la Tabla B todos los registros con los que estuviera relacionado.
En el ejemplo anterior, si borramos el libro El médico también se borrarán los dos préstamos relacionados.
4-. Consultas
a) Diseño de consultas
A la hora de realizar una consulta hay que indicar: 1) Tabla o tablas implicadas en la consulta 2) Campos de la tabla/s que se van a utilizar
3) De los campos utilizados, cuáles se van a mostrar 4) Criterios de la consulta
5) Ordenación
b) Consultas sobre una única tabla
En los campos que sean de texto habrá que poner el criterio entre comillas simples
Consulta 1-. Mostrar el título, la editorial y el año de edición de los libros escritos por Benito Pérez Galdós. Ordenar los registros por el título en sentido ascendente.
Consulta 2-. Mostrar el título, el autor y el año de edición de los libros de la editorial Anaya. Ordenar los registros por el título en sentido descendente.
Consulta 3-. Mostrar los libros editados en el año 1990
Consulta 5-. Mostrar los libros de la editorial Anaya o de la editorial Castalia
Consulta 6-. Mostrar los libros de las editoriales Anaya o Castalia editados en el año 1990
c) Consultas sobre varias tablas
Consulta 1-. Mostrar el nombre y la localidad de los socios que han recibido en préstamo el libro Poesías escogidas. También se mostrará la fecha de préstamo. Ordenar los registros ascendentemente por este último campo.
Consulta 2-. Mostrar el título y la editorial de los libros que se le han prestado a Fanny Roig. También se mostrará la fecha de préstamo. Ordenar los registros ascendentemente por este último campo.
Consulta 3-. Mostrar los libros que fueron editados en el año 1985 o 1986 y que han sido prestados en alguna ocasión. Mostrar también el nombre del socio que lo recibió en préstamo y la fecha en que fue prestado.
Consulta 4-. Mostrar todos los libros que fueron editados en el año 1985 y que fueron prestados el día 10/07/2004.
d) Consultas con operadores de comparación
Operador Significado
= Igual a2
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Distinto de
Consulta 1-. Mostrar todos los libros cuyo año de edición sea menor que 1990.
Consulta 2-. Mostrar todos los libros que no sean de la editorial Cátedra.
Consulta 3-. Mostrar todos los libros que se prestaron antes de la fecha 01/06/04.
e) Consultas con caracteres de comodín
Son dos caracteres (* y ?) que nos permiten aumentar las posibilidades de selección en una consulta. Hay que anteponer la palabra reservada COMO.
Comodín Función
* Actúa como un conjunto de caracteres
? Actúa como un solo carácter en la
posición indicada
Consulta 1-. Mostrar todos los libros que empiezan por la palabra Química.
Consulta 2-. Mostrar todos los libros prestados a socios cuyo oficio sea psicólogo/a
f) Consultas con funciones
Las consultas con funciones permiten introducir campos calculados en las consultas. Los campos calculados más utilizados son: suma, promedio, máximo, mínimo y contar.
Consulta 1-. Diseñar una consulta para que se muestre el número de préstamos que se ha hecho a cada socio. Mostrar el código y el nombre del socio.
Consulta 2-. Diseñar una consulta para que se muestren la media de los años de edición de los libros prestados a cada socio. Mostrar el código y el nombre del socio.
5-. Análisis relacional
a) ¿Qué es el análisis relacional?
Cuando vamos a comenzar a crear una base de datos nos surge en primer lugar la pregunta de qué tablas crear y cómo relacionarlas entre sí. Si la base de datos va a tener varias tablas estas decisiones pueden ser difíciles de resolver.
El Análisis Relacional es una técnica de análisis que permite antes de crear una base de datos determinar qué tablas vamos a tener que crear y qué relaciones estableceremos entre ellas. La principal herramienta del Análisis Relacional son los Diagramas Entidad-Relación. Entenderemos mejor cómo utilizarlos con el ejemplo que se detalla a continuación.
b) Un caso práctico
“Una familia de campesinos posee una granja de animales. Desean disfrutar de las ventajas de la sociedad de la información y es por eso que se han decidido a informatizar su negocio. Han comprado un ordenador y una impresora, han instalado el sistema operativo y las aplicaciones de ofimática más extendidas del mercado, se han conectado a Internet, pero... les gustaría disponer de una aplicación con la que poder llevar la gestión diaria de la granja. Han buscado a un experto en bases de datos y han tenido la fortuna de dar contigo. A continuación te detallan cuáles son los requisitos que desean para la aplicación.
En primer lugar, desean tener disponible en todo momento el número de cabezas de cada especie animal presente en la granja (número de vacas, de cerdos, de ovejas, etcétera).
También se quiere registrar la información relevante a los alimentos que se suministra a los animales. De cada tipo de alimento (grano, pienso, etcétera) se quiere guardar su descripción, fecha de compra, fecha de caducidad y proveedor que lo suministra. Cada uno de ellos es proporcionado por un único proveedor, pero un mismo proveedor puede suministrar diferentes alimentos. De cada proveedor se quiere almacenar el nombre de la empresa, su dirección, número de teléfono, persona de contacto y dirección de correo.
Además, la granja vende diferentes productos. Se desea almacenar la siguiente información referente a estos productos: descripción (huevos, leche, lana, etcétera), precio, cantidad vendida en el año actual y recaudación anual acumulada.
Un mismo tipo de alimento se puede dar a diferentes especies animales, y viceversa, cada especie animal puede recibir más de un tipo de alimento. Es por esto último que se quiere llevar una programación para saber, cada día de la semana, qué se le da de comer a cada animal.
Por último, para evitar errores y malentendidos, preferirían disponer de unos códigos internos para referirse de manera unívoca a los productos que venden, los proveedores, y en general, cualquier elemento perteneciente a la base de datos.
Los propietarios de la granja no tienen ni idea de cómo se administra una base de datos, por lo que desearían que les proporcionaras un entorno sencillo e intuitivo de utilizar (es decir, tendrás que hacer uso de formularios y de informes).”
c) Aplicación de la técnica de análisis
i) IDENTIFICACIÓN DE LAS ENTIDADES Y DE SUS CAMPOS ANIMAL = código + descripción + número
ALIMENTO = código + descripción + fecha de compra + fecha de caducidad PROVEEDOR = código + nombre + contacto + teléfono + e-mail
PRODUCTO = código + descripción + precio + cantidad + recaudación ii) IDENTIFICACIÓN DE LAS RELACIONES
Relación uno a muchos
Relación donde un registro de la tabla A se puede relacionar con varios registros de la tabla B, pero un registro de la tabla B sólo puede relacionarse con uno de la tabla A.
Un proveedor puede suministrar varios alimentos pero un tipo de alimento sólo puede ser suministrado por un proveedor distinto (relación Suministra).
Un producto sólo puede ser obtenido de una especie animal pero una especie animal puede proporcionar diferentes productos (relación Procedencia).
Relación muchos a muchos
Relación donde un registro de la tabla A se puede relacionar con varios registros de la tabla B y un registro de la tabla B también con varios de la tabla A.
Un mismo tipo de alimento se puede dar a diferentes especies animales, y viceversa, cada especie animal puede recibir más de un tipo de alimento (relación alimentación).
Relación uno a uno
Relación donde un registro de la tabla A sólo se puede relacionar con un registro de la tabla B y viceversa.
Caso extraído de otro caso práctico: Un departamento tiene un único jefe de departamento y un profesor sólo puede ser jefe de un departamento (relación jefe de departamento)
Diagrama Entidad - Relación
El diagrama obtenido recibe el nombre de Diagrama Entidad - Relación
iii) PASO A TABLAS
A B A B Alimento Proveedor Suministra Animal Producto Procedencia Alimentación
Relación uno a muchos
Se incluirá en la tabla A la clave primaria de la tabla B.
PRODUCTO = código + descripción + precio + cantidad + recaudación + animal
CAjena: {animal} ANIMAL
Producto
Código Descripción Precio Cantidad Recaudación Animal
1 Leche de vaca 1 € 500 500 € 1
2 Queso de vaca 3 € 100 300 € 1
ALIMENTO = código + descripción + fecha de compra + fecha de caducidad + proveedor
CAjena: {proveedor} PROVEEDOR Relación muchos a muchos
Se creará una nueva tabla que incluya las claves primarias de las dos tablas relacionadas. La clave primaria de la nueva tabla estará formada por esto dos campos.
ALIMENTACIÓN = Animal + Alimento + Día
CAjena: {Animal} ANIMAL
CAjena: {Alimento} ALIMENTO
ALIMENTACIÓN
Animal Alimento Día
1 101 Lunes
2 101 Lunes
2 102 Martes
Relación uno a uno
Hay que incluir en una de las dos tablas la CP de la otra tabla. DEPARTAMENTO = Código + nombre + Jefe de departamento CAjena: {Jefe de departamento} PROFESOR
DEPARTAMENTO
Código Nombre Jefe de departamento
1 Matemáticas 1005
2 Lenguas 1005 (Imposible)
1) En primer lugar el usuario le proporciona al diseñador los requisitos de la base de datos que necesita. Un ejemplo de requisitos podría ser el caso práctico que se ha analizado en el apartado anterior.
2) A continuación el diseñador de la base de datos obtiene el Diagrama Entidad-Relación a partir de los requisitos del usuario.
3) En tercer lugar realizaremos el paso a tablas a partir del Diagrama Entidad-Relación obtenido en el paso anterior.
4) A continuación crearemos la base de datos, indicando su nombre y ubicación en el disco duro del ordenador.
5) Ahora entraremos en la base de datos y comenzaremos a crear las tablas: a. Toda tabla debe tener su clave primaria: campo (o conjunto de campos)
que no puede contener valores nulos ni valores repetidos. Es aconsejable que la clave primaria sea un campo numérico.
b. Los campos deben estar definidos de modo que se optimicen los recursos: no utilizar campos de texto de 50 caracteres si sólo se van a necesitar 10, definir los campos numéricos de tipo byte si va a contener valores pequeños,...
c. Definiremos un campo como requerido cuando queramos que no contenga valores nulos.
d. Podemos indicar que un campo se rellene por defecto con un valor predeterminado.
e. Cuando queramos que al introducir un valor en un campo se compruebe una determinada condición, usaremos una regla de validación. Además, podemos escribir un texto de validación que se mostrará al usuario cuando no se cumpla la regla que hemos definido.
6) Estableceremos las relaciones entre las tablas: es necesario establecer relaciones para poder realizar más tarde consultas que lean datos de varias tablas (que son las más comunes). Cuando se establece una relación hay que tener en cuenta:
a) Las relaciones entre tablas se establecen entre dos campos con valores comunes, es decir, que tienen el mismo significado, que están almacenando la misma información.
Usuario de la base de datos Diseñador de la base de datos Requisitos del usuario
b) Los dos campos relacionados deben ser del mismo tipo de datos: numérico -entero, numérico – entero largo, fecha,...
c) Además, cuando se crea una relación pueden indicarse las siguientes propiedades:
i. Integridad referencial: en el ejemplo anterior, al introducir el código de un libro en la tabla de Préstamos, si no existe ese código en la tabla de los Libros, se mostrará un mensaje de error y se impedirá el préstamo. De este modo nos aseguramos de que los préstamos siempre hagan referencia a libros que ya existan.
ii. Actualización en cascada: si cambiáramos el código de un libro en la tabla Libros, se actualizarán automáticamente todos los libros con ese código que hubiese en la tabla de Préstamos.
iii. Borrado en cascada: si eliminamos un libro se borrarán todos los préstamos relacionados que tuviese.
7) Ahora crearemos las consultas principales que va a ejecutar el cliente. Si hubiese una consulta que fuéramos a ejecutar con mucha frecuencia, sería conveniente definir un índice sobre el campo sobre el que se define el criterio de la consulta. Los campos indexados pueden ser de dos tipos: sin duplicados (cuando ese campo no puede tener valores repetidos) o con duplicados (cuando sí que puede tenerlos).
8) A continuación crearemos los informes que vaya a necesitar el cliente, bien directamente sobre las tablas o bien sobre alguno de las consultas creadas previamente.
9) Ahora crearemos los formularios necesarios para gestionar cada una de las tablas, así como otros formularios que creamos que puedan ser necesarios. También diseñaremos un formulario que será la ventana inicial de la base de datos y desde donde se podrá acceder a todos lo demás. 10) Por último se entregará la base de datos al cliente.
Usuario de la base de datos Diseñador de la base de datos Entrega de la base de datos Entrará en el formulario inicial Introducirá los registros