Construcción de una Base de Datos

Unidad de Apoyo para el Aprendizaje

Iniciar

Introducción


Una vez realizado el diseño de la base de datos y obtenido el modelo relacional, ha llegado el momento de implementarlo (programarlo) en un manejador de base de datos específico. Para realizar esto, será necesario determinar cuál nos conviene. Hoy en día existe una gran variedad de ellos, desde los que cuentan con licencia de uso comercial, hasta los basados en la postura del software libre.

Algunos de los aspectos relevantes para la selección son: el volumen de información que pueden almacenar (generalmente medido en megabytes o terabytes); el número de usuarios que pueden acceder al mismo tiempo; sus ventajas en el manejo de transacciones; su velocidad de respuesta a un número considerable de transacciones; y sus características para imponer seguridad a los datos.

La programación en una base de datos relacional se realiza con el lenguaje SQL; éste es un lenguaje estándar y, si bien hay diferencias de programación entre los distintos manejadores de bases de datos, los comandos más utilizados, generalmente son los mismos.

Posteriormente, podrás realizar tres actividades de aprendizaje y una autoevaluación para verificar tus conocimientos adquiridos; además, si lo crees necesario, puedes revisar nuevamente el contenido y realizar las actividades para obtener un mejor desempeño.

Construcción de una base de datos

Base de datos, tabla



El estudio de este tema te permitirá:

Construir una base de datos relacional, producto del diseño lógico de una base de datos, a fin de que puedas programarlo en un manejador de base de datos específico.

Roles del implementador


El diseñador de bases de datos entrega el modelo lógico de tablas al implementador, o programador de bases datos, para que construya la base de datos en el sistema manejador. Sus principales roles o actividades son:

Esquema con los seis roles o actividades de un implementador o programador de base de datos.

Esquema de las seis principales actividades de un implementador de una base de datos.



A continuación, revisarás a detalle cada una de dichas actividades.

Tablas


Las tablas son un conjunto de filas y columnas que nos permiten almacenar los datos bajo el enfoque de un modelo relacional. Como sabes, el término tabla se conoce de manera formal como relación, al renglón como tupla y a la columna como atributo. Son en éstas donde almacenamos los datos mediante instrucciones en DML (Lenguaje de Manipulación de Datos).



Instrucciones de DML

Cutro, A. (s. f.). Modelo de base de datos relacional [tabla].
Tomada de http://www.dataprix.com/263-bases-datos-relacional


Para crear una tabla utilizamos el comando CREATE TABLE, con la siguiente sintaxis general:



Símbolo de código


CREATE TABLE nombre_tabla
(
nombre_columna tipo_dato
[DEFAULT valor_default]
[CONSTRAINT nombre_constraint TIPO (condición)],
nombre_columna tipo_dato…,
nombre_columna tipo_dato¬…
)



Para ejemplificar la manera de crear una tabla veamos un ejemplo.



Pensemos que deseamos crear la siguiente tabla.

Tabla con nombres y apellidos de diferentes personas

Ejemplo de tabla para crearse usando SQL.


Siguiendo la plantilla de sintaxis expuesta arriba, podemos crear la tabla de la siguiente manera:

Símbolo de código


CREATE TABLE autor
(
idautor integer CONSTRAINT pkautor
PRIMARY KEY,
nombres varchar(40) NOT NULL,
apellidos varchar(40) NOT NULL
);



Integridad


La integridad de una base de datos se establece con restricciones, en inglés constraints. Ponemos restricciones en las columnas de una tabla para que acepten o rechacen ciertos valores. Con ello, evitamos que los datos ingresados a la base sean incorrectos o inapropiados.

La siguiente lista incluye posibles restricciones de una columna y la descripción de los valores que acepta o rechaza.

Tabla mostrando las restricciones de una columna.

Restricciones de una columna

En seguida puedes ver el código completo para crear una tabla con todos los tipos de constraints.



Símbolo de código


CREATE TABLE empleado
(
idempleado integer CONSTRAINT
pkempleado PRIMARY KEY,
nombres varchar(40) NOT NULL,
apellidos varchar(40) NOT NULL,
rfc char(13) CONSTRAINT unirfc UNIQUE,
idarea integer REFERENCES area(idarea)
ON DELETE CASCADE
ON UPDATE CASCADE );



Índices


Los índices permiten incrementar el rendimiento de la base de datos haciendo más rápida la ejecución de consultas. En otras palabras, una cláusula SELECT con WHERE encontraría más rápido los registros que cumplen la condición.

Se hacen sobre una o más columnas de una tabla. Es importante resaltar que debemos poner índices sólo en columnas usadas frecuentemente en nuestras expresiones de comparación con la cláusula WHERE.

Instrucciones de DML

Cutro, A. (s. f.). Modelo de base de datos relacional [tabla].
Tomada de http://www.dataprix.com/263-bases-datos-relacional


Para crear un índice utilizamos la cláusula CREATE INDEX y para borrarlo se hace con el comando DROP INDEX, por ejemplo:
CREATE INDEX idx_nombres ON
empleado(nombres);
DROP INDEX idx_nombres;



Los índices de tablas asociados a campos de tipo numérico y carácter pueden ser compuestos en virtud de que se pueden vincular dos campos para formar un solo índice, por ejemplo, en la tabla “Producto” y los atributos Cod_Prod y Suc_Prod, se pueden combinar para formar el índice compuesto “Pedido”. El comando sería el siguiente:



Símbolo de código


CREATE INDEX Pedido ON Producto(Cod-
Prod, Suc_Prod);



Vistas


Una vista es un objeto de la base de datos que almacena una consulta. Funciona como una tabla, pero no existe físicamente en la base de datos; se genera de forma dinámica. Una vista nos permite encapsular consultas que utilizamos de forma recurrente, nos evita escribirlas de nuevo. También nos ayuda a manipular consultas muy complejas de una forma más sencilla.

La instrucción SQL para consultar datos es SELECT. La sintaxis básica general de esta instrucción es:

Símbolo de código


SELECT nombre_columna, nombre_columna,…

FROM nombre_tabla
WHERE condición



A partir de este tipo de consultas se crean las vistas con el comando CREATE VIEW, de la siguiente forma:



Símbolo de código


CREATE VIEW nombre_visita AS
SELECT…



Veamos algunos ejemplos de vistas creadas a partir de diversas consultas.

Esquema mostrando tres ejemplos de vistas creadas a partir de diversas consultas.

Esquema mostrando tres ejemplos de vistas creadas a partir de consultas diversas.



Recuperar registros de una sola tabla es muy inusual. En la realidad siempre obtenemos datos de diferentes tablas, a veces de muchas. Es importante, entonces, conocer la manera de “unirlas” para poder obtener valores almacenados en columnas de unas y de otras. Esto lo realizamos con la operación relacional llamada junta o join. Existen varios tipos de join, entre ellos podemos mencionar:

SEl resultado es un producto cartesiano, es decir, una combinación de todos los valores de una tabla contra todos los valores de otra tabla.

El resultado es un conjunto de registros que resultan de la combinación de dos o más tablas, siempre y cuando existan columnas en común y los valores de dichas columnas coincidan. Este join necesita de una cláusula ON que iguale las columnas en común.

El resultado es un inner join que además incluye aquellos valores donde no hay coincidencia en el origen del lado izquierdo (LEFT OUTER JOIN) o del lado derecho (RIGHT OUTER JOIN), o aquellos que no coinciden en ningún lado (FULL OUTER JOIN).



A continuación, un ejemplo de consulta de dos tablas.



Símbolo de código


CREATE VIEW vlibroautor AS
SELECT libro.titulo, autor.nombres,
autor.apellidos
FROM libro INNER JOIN autor
ON (libro.idautor = autor.idautor);



El resultado de este join no incluiría los libros sin autor, en caso de que no haya coincidencia entre las claves idautor de las dos tablas. Esto sucede porque el inner join rescata sólo aquellos que cumplen la condición de igualdad entre columnas en común. Si quisiéramos rescatar los libros que sí tienen autor y los que no tienen, deberíamos utilizar un outer join.



Símbolo de código


CREATE VIEW vlibroautor AS
SELECT libro.titulo, autor.nombres,
autor.apellidos
FROM libro LEFT OUTER JOIN autor
ON (libro.idautor = autor.idautor);



Se trata de un left outer join, porque la tabla libro está a la izquierda del join. Si lo que quisiéramos fuera todos los autores con y sin libro asociado, entonces tendríamos que programar un right outer join.



Símbolo de código


CREATE VIEW vlibroautor AS
SELECT libro.titulo, autor.nombres,
autor.apellidos
FROM libro RIGHT OUTER JOIN autor
ON (libro.idautor = autor.idautor);

Procedimientos almacenados


Un procedimiento almacenado (stored procedure) es un conjunto de instrucciones en un lenguaje de programación que se almacena como un objeto de la base de datos, y puede ser ejecutado en cualquier momento. Por lo general, estos procedimientos almacenados están escritos en un lenguaje peculiar que combina un lenguaje procedimental (procedural) con el SQL.

Este lenguaje se vuelve bastante poderoso, en tanto que une declaración de variables, manejo de excepciones, expresión de ciclos y condicionales con las capacidades del SQL. Todos los manejadores de bases de datos incluyen un lenguaje de este tipo, por ejemplo: Oracle tiene el pl/sql, elPostgreSQL el pl/pgsql y SQL Server cuenta con el Transact-sql.



Hay tres tipos de procedimientos almacenados. Los procedimientos como tales, que no regresan valor; las funciones, que sí regresan algún valor; y los triggers, se ejecutan automáticamente cuando se actualiza la tabla a la que están vinculados.



Esquema mostrando los tres tipos de procedimientos almacenados.

Esquema mostrando los tres tipos de procedimientos almacenados.



La programación de procedimientos almacenados varía de manejador en manejador. Además, es muy importante, ya que nos permite encapsular la lógica del procesamiento de datos al interior de la base de datos. Este hecho es una ventaja en comparación con programar el procesamiento de datos en los programas de aplicación, ya que los stored procedures se ejecutan más rápido y están precompilados y probados desde antes.

Es posible programar dentro de la base de datos, desde cálculos completos de impuestos y procesamientos estadísticos hasta modificaciones complejas de datos.

Trigger


Un trigger ejecuta un determinado procedimiento almacenado en la base de datos, cuando se realiza cualquier modificación en una tabla. Un trigger es una función que se “dispara” antes o después de la instrucción que actualiza la tabla a la que está asociado. Son usados para implementar reglas de integridad de datos, auditoría de tablas importantes y actividades de mantenimiento de datos.

Para crear un trigger debemos usar la siguiente sintaxis general:

La siguiente lista incluye posibles restricciones de una columna y la descripción de los valores que acepta o rechaza.

Símbolo de código


CREATE TRIGGER nombe_trigger
{ BEFORE | AFTER } { DELETE OR UPDATE OR
INSERT }
ON nombre_tabla FOR EACH { ROW |
STATEMENT }
EXECUTE PROCEDURE nombre_procedimiento;

Restricciones de una columna



Las opciones de BEFORE o AFTER permiten definir si el trigger se ejecutará antes o después de un evento INSERT, DELETE o UPDATE. La cláusula FOR EACH ROW indica que el procedimiento que dispara el trigger será ejecutado por cada renglón actualizado por el evento INSERT, DELETE o UPDATE. Si, por el contrario, se indica FOR EACH STATEMENT, el procedimiento será disparado una sola vez.

Podemos crear un trigger para los siguientes casos.

Después de borrar o actualizar en la tabla ventas, actualizar en la tabla venta total el total de venta.

Después de modificar, eliminar o actualizar la tabla venta, registrar en la tabla venta bitácora el usuario que modificó la venta y la hora de modificación.

Antes de actualizar o eliminar en la tabla cliente, revisar si el cliente no tiene registros en la tabla clientes_morosos, en caso de tener registros detener la actualización.

Actividad 1. Actividades que el implementador de una BD debe realizar

Posterior al diseño de la base de datos inicia la construcción de la misma, la cual conlleva varias actividades que debe realizar el implementador de bases de datos.

Por ello, en la siguiente actividad, deberás relacionar dichas actividades, con sus descripciones correspondientes, para que sepas cómo construir una base de datos.

Actividad 2. Conceptos a conocer antes de construir una BD

La construcción de una base datos es la fase posterior al diseño de la misma; existen sintaxis y comandos que debes conocer perfectamente, antes de su construcción. ¿Eres capaz de identificarlos?

Actividad 3. Construyendo una base de datos

Ahora que has identificado las actividades que debe desarrollar un implementador de una BD, así como las sintaxis y comandos para su posterior construcción, es momento que, a través de un caso hipotético, construyas una base de datos.

Autoevaluación. Construcción de una base de datos

Como revisaste en este tema, la construcción de una base de datos implica la realización de varias tareas y la identificación de varios conceptos, como crear las tablas utilizando SQL, realizar vistas, y construir procedimientos almacenados, como triggers.

Así entonces, es necesario que verifiques si te has apropiado de estos conocimientos. Para ello, elige si las siguientes descripciones forman parte o no de las tareas y conceptos primordiales para construir una base de datos.

Fuentes de información

Básicas

Bibliografía

Date, C. J. (2001).Sistemas de bases de datos. (7.ª ed.) México: Pearson Educación.

Geschwinde, E. y Schönig, H. (2002). González, A. (2001). SQL Server, programación y administración. Madrid: Alfaomega/Ra-Ma.

Mendelzon, A. (2000). Sistemas de bases de datos relacionales.México: Pearson Educación.

Melton J. y Eisenberg, A. (2004) SQL y JAVA. Guía para SQLJ, JDBC y tecnologías relacionadas. México: Alfaomega/Ra-Ma.

Pérez, C. (2004). Domine Microsoft SQL Server 2000, administración y análisis de bases de datos. México: Alfaomega/Ra-Ma.

Complementarias

Documentos electrónicos

Gómez, M. C. (2013). Notas del curso bases de datos (Versión electrónica). México: UAM. Consultado el 26 de noviembre de 2017 de https://www.cua.uam.mx/pdfs/conoce/libroselec/Notas_del_curso_Bases_de_Datos.pdf

Gómez, E., Martínez, P., Moreda, P., Suárez, A., Montoyo, A. y Saquete, E. (s. f.).Apuntes: bases de datos 1 (Versión electrónica). Alicante: Universidad de Alicante-Escuela Politécnica Superior-Dpto. de Lenguajes y Sistemas Informáticos. Consultado el 10 de diciembre de 2017 de https://rua.ua.es/dspace/bitstream/10045/2990/1/ApuntesBD1.pdf

Cómo citar

Texto correspondiente a esta sección.