Professional Documents
Culture Documents
I VOTE
ELABORADO POR:
PRESENTADO A:
BOGOTÁ DC.
2015
TABLA DE CONTENIDO
1. INTRODUCCIÓN
2. PLANTEAMIENTO DEL PROBLEMA Y JUSTIFICACIÓN
3. OBJETIVOS
3.1 Objetivo General
3.2 Objetivo específico
4. MARCO TEORICO
4.1 Definición. Base de datos
4.2 Sistema de gestión de base de datos (SGDB)
6. CRONOGRAMA DE ACTIVIDADES
7. SISTEMA PROPUESTO
10. BIBLIOGRAFIA
1. INTRODUCCION
Este proyecto se elabora bajo el marco del módulo Fundamentos de Bases de datos de la
especialización en Gerencia de Proyectos de Inteligencia de Negocios
Este proyecto mostrará cómo se desarrolla un sistema de información con herramientas
de software que permitirá administrar, analizar, utilizar y explotar la información
contenida en una base de datos. Para la construcción de la Base de datos se usara el
modelo diseñado a partir de los requisitos exigidos por la compañía. El sistema
desarrollado permitirá tener el control completo de diferentes tipos de elecciones,
controlando los usuarios, los candidatos y la programación, y el resultado de las
votaciones.
Partiendo del hecho que los modelos democráticos tanto de los países como de las
organizaciones hoy por hoy buscan la participación de todos es preciso crear métodos
que permitan esta participación, y que mejor forma que hacerlo que a través de la
herramienta de mayor difusión como lo es la tecnología; ya que está al alcance de todos.
Por esta razón se hace necesario el desarrollo de programas que genere confianza y les
brinde a todos los implicados sentir que su opinión es tomada en cuenta
Estos sistemas ayudarán a acelerar el conteo de los votos, proveer de una mejor
accesibilidad a los votantes, además ofrece un medio de respaldo para los procesos que
se llevan a cabo, porque puede presentar informes detallados del estado de la votación
en momentos cruciales.
Otro aspecto a tomar en consideración es el miedo a que exista fraude, usos de medios
ilícitos, compra de votantes, alteraciones en el sistema actual para el conteo de votos,
etc. Por ello se hace más latente la necesidad de implementar la tecnología con el fin de
dar trasparencia al proceso.
3. OBJETIVOS
• Emplear un software para diseñar una base de datos basado en un modelo entidad
- relación.
El término de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado
en California, USA. Una base de datos se puede definir como un conjunto de información
relacionada que se encuentra agrupada o estructurada.
Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de
datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas
que manipulen ese conjunto de datos.
Los orígenes de las bases de datos se remontan a la Antigüedad donde ya existían bibliotecas y
toda clase de registros. Además también se utilizaban para recoger información sobre las
cosechas y censos. Sin embargo, su búsqueda era lenta y poco eficaz y no se contaba con la ayuda
de máquinas que pudiesen reemplazar el trabajo manual.
En 1884 Herman Hollerith creó la máquina automática de tarjetas perforadas, siendo nombrado
así el primer ingeniero estadístico de la historia. En esta época, los censos se realizaban de forma
manual.
Ante esta situación, Hollerith comenzó a trabajar en el diseño de una maquina tabuladora o con
sensor, basada en tarjetas perforadas.
Posteriormente en la época de los sesenta, las computadoras bajaron los precios para que las
compañías privadas las pudiesen adquirir; dando paso a que se popularizara el uso de los discos,
cosa que fue un adelanto muy efectivo en la época, debido a que a partir de este soporte se podía
consultar la información directamente, sin tener que saber la ubicación exacta de los datos.
En esta misma época se dio inicio a las primeras generaciones de bases de datos de red y las
bases de datos jerárquicas, ya que era posible guardar estructuras de datos en listas y árboles.
Por lo que respecta a la década de los setenta, Edgar Frank Codd, científico informático ingles
conocido por sus aportaciones a la teoría de bases de datos relacionales, definió el modelo
relacional a la par que publicó una serie de reglas para los sistemas de datos relacionales a través
de su artículo “Un modelo relacional de datos para grandes bancos de datos compartidos”.
Este hecho dio paso al nacimiento de la segunda generación de los Sistemas Gestores de Bases
de Datos.
Como consecuencia de esto, durante la década de 1970, Lawrence J. Ellison, más conocido como
Larry Ellison, a partir del trabajo de Edgar F. Codd sobre los sistemas de bases de datos
relacionales, desarrolló el Relational Software System, o lo que es lo mismo, lo que actualmente
se conoce como Oracle Corporation, desarrollando así un sistema de gestión de bases de datos
relacional con el mismo nombre que dicha compañía.1
En la década de 1990 la investigación en bases de datos giró en torno a las bases de datos
orientadas a objetos. Las cuales han tenido bastante éxito a la hora de gestionar datos complejos
en los campos donde las bases de datos relacionales no han podido desarrollarse de forma
eficiente.
En la actualidad, las tres grandes compañías que dominan el mercado de las bases de datos son
IBM, Microsoft y Oracle. Por su parte, en el campo de internet, la compañía que genera gran
cantidad de información es Google. Aunque existe una gran variedad de software que permiten
crear y manejar bases de datos con gran facilidad.
Definición de Base de datos: Se define una base de datos como una serie de datos organizados
y relacionados entre sí, los cuales son recolectados y explotados por los sistemas de información
de una empresa o negocio en particular.
Características
Entre las principales características de los sistemas de base de datos podemos mencionar:
1
http://histinf.blogs.upv.es/2011/01/04/historia-de-las-bases-de-datos/
Seguridad de acceso y auditoría.
Respaldo y recuperación.
Acceso a través de lenguajes de programación estándar.
Algunos ejemplos de SGBD son Oracle, DB2, PostgreSQL, MySQL, MS SQL Server, etc.
Un SGBD debe permitir:
Definir una base de datos: especificar tipos, estructuras y restricciones de datos.
Construir la base de datos: guardar los datos en algún medio controlado por el mismo
SGBD
Manipular la base de datos: realizar consultas, actualizarla, generar informes.
Crear y gestionar base de datos de forma fácil, cómoda y rápida.
Ofrece un ambiente agradable dado por su interfaz gráfica.
• Abstracción de la información: Los SGBD ahorran a los usuarios detalles acerca del
almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de
archivos, este hecho se hace transparente al usuario: Así, se definen varios niveles de abstracción.
• Redundancia mínima: Un buen diseño de una base de datos logrará evitar la aparición de
información repetida o redundante: De entrada, lo ideal es lograr una redundancia nula; no
obstante, en algunos casos la complejidad de los cálculos hace necesaria la aparición de
redundancias.
2
http://www.maestrosdelweb.com/que-son-las-bases-de-datos/
3
http://indira-informatica.blogspot.com/2007/09/qu-es-un-sistema-de-gestin-de-base-de.html
• Consistencia: En aquellos casos en los que no se ha logrado esta redundancia nula, será
necesario vigilar que aquella información que aparece repetida se actualice de forma coherente,
es decir, que todos los datos repetidos se actualicen de forma simultánea.
• Seguridad: La información almacenada en una base de datos puede llegar a tener un gran valor.
Los SGBD deben garantizar que esta información se encuentra segurizada frente a usuarios
malintencionados, que intenten leer información privilegiada; frente a ataques que deseen
manipular o destruir la información; o simplemente ante las torpezas de algún usuario autorizado
pero despistado. Normalmente, los SGBD disponen de un complejo sistema de permisos a
usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos.
• Integridad: Se trata de adoptar las medidas necesarias para garantizar la validez de los datos
almacenados. Es decir, se trata de proteger los datos ante fallos de hardware, datos introducidos
por usuarios descuidados, o cualquier otra circunstancia capaz de corromper la información
almacenada.
• Respaldo y recuperación: Los SGBD deben proporcionar una forma eficiente de realizar copias
de respaldo de la información almacenada en ellos, y de restaurar a partir de estas copias los
datos que se hayan podido perder.
Planteamiento del
Problema
Control de integridad
referencial
Programación del
sistema
Implementación del
Sistema
Identificación de
errores
Ajustes y
Finalización
6. CRONOGRAMA DE ACTIVIDADES
7. SISTEMA PROPUESTO
Registro de usuarios
El sistema deberá permitir el ingreso o registro de cada usuario, se deberá ingresar información
completa que contenga: Nombre completo, número de identificación, género, fecha de
nacimiento y contraseña para el acceso al sistema. La contraseña deberá ser entregada al usuario
vía correo certificado.
Candidatos
El sistema deberá permitir el registro y generación de listas de los candidatos los cuales deben
ser registrados con los datos completos de: Nombre completo, número de identificación, género,
imagen, fecha de nacimiento y número de lista del candidato.
Elecciones
El sistema deberá permitir el registro y generación de listas con las elecciones que se realizaran,
estas deben contener los datos: Nombre de la elección (tipo de elección, asamblea, presidente,
etc.), fecha de inicio de la elección, fecha de fin, hora de inicio y hora de finalización de la elección.
Listas electorales
El sistema deberá permitir al usuario la visualización de las listas electorales en curso a la fecha,
deberá permitir que el usuario emita su voto, lo cancele de ser necesario y la confirmación final
del voto para luego proceder a el almacenamiento del mismo.
Votación
El sistema debe restringir al usuario de realizar más de un voto para la misma elección, no se
puede permitir que exista más de un voto del mismo usuario puesto que sería un fraude.
El sistema verificara la elección en la cual se almaceno la votación del usuario, la última votación
realizada, realizar este proceso sobre las elecciones realizadas y así restringir la doble votación.
El usuario solo podrá votar por uno y solo un candidato u opción de las listas de cada elección, la
única opción adicional es el voto en blanco cuando el usuario no está de acuerdo con ninguno de
los candidatos postulados en la elección.
Un candidato solo podrá postularse en una elección por ello no deberá existir duplicidad de
candidatos en ninguna de las listas.
El sistema deberá contabilizar los votos almacenados, permitiendo ver cada uno de ellos y
guardando un registro de los votos cancelados.
Final de las elecciones
Al finalizar las elecciones el sistema deberá realizar el conteo total de los votos, deberá permitir
conocer el ganador de cada elección y almacenar estos datos para posteriormente tener los datos
históricos de cada una de las elecciones.
Código Descripción
El sistema deberá contar con tips de ayuda a los usuarios para evitar
RNF03
que estos comentan errores.
CONFIABILIDAD
Código Descripción
SOPORTE
Código Descripción
Código Descripción
RESTRICCIONES DE DISEÑO
Código Descripción
INTERFACE
Código Descripción
Elección
Candidato Cod_Eleccion
Usuario
Id_Candidato Fecha_Inicio
Id_Usuario
Nombre Fecha_Fin
Nombre
Apellidos Hora_Inicio
Apellidos
Imagen Hora_Fin
Género
Género Estamento
Fecha de nacimiento
Nacimiento Activo
Contraseña
Num_Lista
Cod_Eleccion
Votación
Fecha
Hora
Id_Usuario
Id_Candidato
Cod_Eleccion
Cuando se da una relación entre tablas, la tabla principal es aquella que contiene un registro
único que se relaciona con múltiples registros que se encuentran en la tabla secundaria. Por
ejemplo: en el diseño descrito en la sección anterior se tiene una relación de uno a varios entre
a tabla Elección y la tabla Candidato. Cada registro que se encuentra en la tabla Elección es único
y el código de la elección jamás se repetirá por ser esta llave primaria. Ahora en la
tabla Candidato cada registro también es único y el código del candidato jamás se repetirá por
ser esta llave primaria, pero además esta tabla tiene un campo donde se relaciona el
Cod_Elección (llave foránea) al cual el candidato se postuló. En esta última tabla puede tener
varios candidatos con el mismo código de elección.
Ahora bien, como en el diseño de esta base de datos de este proyecto se tienen tablas
relacionadas y para mantener la integridad referencial entre los registros de estas tablas, se
definirán las siguientes reglas en los campos llaves foráneas que están en las tablas secundarias
o hijas:
10. BIBLIOGRAFIA
http://www.maestrosdelweb.com/que-son-las-bases-de-datos/
http://histinf.blogs.upv.es/2011/01/04/historia-de-las-bases-de-datos/
http://indira-informatica.blogspot.com/2007/09/qu-es-un-sistema-de-gestin-de-base-
de.html
http://www.cavsi.com/preguntasrespuestas/que-es-un-sistema-gestor-de-bases-de-datos-
o-sgbd/
1. Pruebas con álgebra relacional y cálculo relacional
Algebra relacional
SELECCION
σ identificacion=1212 (usuario);
selection:=select identificacion=1212 (usuario);
PROYECCION
select nombres, apellidos, genero from usuario
PRUEBAS y refinaciamiento
2. DICCIONARIO DE DATOS
DISENO FISICO DE LA BASE DE DATOS
3. Documentación de la implementación y ajustes al sistema de bases de datos.
4. CONSULTAS SQL Y CODIGO SQL QUE RESPONDE A LOS REQUERIMIENTOS DEL SISTEMA,
IMPLEMENTACIÓN DE CURSORES, IMPLEMENTACIÓN DE PROCEDIMIENTOS ALMACENADOS
(STORED PROCEDURES) E IMPLEMENTACIÓN DE DISPARADORES (TRIGGERS)
CREACIÓN DE TABLAS
Usuarios:
CREATE TABLE `usuario` (
`identificacion` VARCHAR(15) NOT NULL,
`nombres` VARCHAR(60) NOT NULL,
`apellidos` VARCHAR(60) NOT NULL,
`genero` VARCHAR(15) NOT NULL,
`nacimiento` DATE NOT NULL,
`contrasena` VARCHAR(60) NOT NULL,
PRIMARY KEY (`identificacion`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
Candidatos:
CREATE TABLE `candidato` (
`identificacion` VARCHAR(15) NOT NULL,
`nombres` VARCHAR(60) NOT NULL,
`apellidos` VARCHAR(60) NOT NULL,
`genero` VARCHAR(15) NOT NULL,
`nacimiento` DATE NOT NULL,
`imagen` VARCHAR(60) NOT NULL,
`num_lista` INT(11) NOT NULL,
`Cod_Eleccion` INT(11) NOT NULL,
PRIMARY KEY (`identificacion`),
INDEX `FK_candidato_eleccion` (`Cod_Eleccion`),
CONSTRAINT `FK_candidato_eleccion` FOREIGN KEY (`Cod_Eleccion`) REFERENCES
`eleccion` (`Cod_Eleccion`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
Elección:
CREATE TABLE `eleccion` (
`Cod_Eleccion` INT(11) NOT NULL AUTO_INCREMENT,
`Fecha_Inicio` DATE NOT NULL,
`Fecha_Fin` DATE NOT NULL,
`Hora_Inicio` TIME NOT NULL,
`Hora_Fin` TIME NOT NULL,
`Estamento` VARCHAR(60) NOT NULL,
`activo` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`Cod_Eleccion`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=3
;
Votación:
CREATE TABLE `votacion` (
`fecha` DATE NOT NULL,
`hora` TIME NOT NULL,
`id_usuario` VARCHAR(15) NOT NULL,
`id_candidato` VARCHAR(15) NOT NULL,
`cod_eleccion` INT(11) NOT NULL,
INDEX `FK_votacion_usuario` (`id_usuario`),
INDEX `FK_votacion_candidato` (`id_candidato`),
INDEX `FK_votacion_eleccion` (`cod_eleccion`),
CONSTRAINT `FK_votacion_usuario` FOREIGN KEY (`id_usuario`) REFERENCES
`usuario` (`identificacion`),
CONSTRAINT `FK_votacion_candidato` FOREIGN KEY (`id_candidato`) REFERENCES
`candidato` (`identificacion`),
CONSTRAINT `FK_votacion_eleccion` FOREIGN KEY (`cod_eleccion`) REFERENCES
`eleccion` (`Cod_Eleccion`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
Insertar candidato:
INSERT INTO `ivote`.`candidato` (`identificacion` ,`nombres` ,`apellidos`
,`genero` ,`nacimiento` ,`imagen` ,`num_lista` ,`Cod_Eleccion`)
VALUES ('104491546', 'pedro luis', 'serna girado', 'Masculino', '1990-05-10',
'104491546.jpg', '1', '2');
select
c.identificacion,c.nombres,c.imagen,c.Cod_Eleccion,c.num_lista,e.Estamento
from candidato c inner join eleccion e on e.Cod_Eleccion=c.Cod_Eleccion and
e.activo='1'
OPEN votos_cursor;
get_votos: LOOP
IF v_finished = 1 THEN
LEAVE get_votos;
END IF;
CLOSE votos_cursor;
END$$
DELIMITER ;
EJECUTAR EL PROCEDIMIENTO
PARA CREAR UN TRIGGER SE CREA UNA TABLA LLAMADA AUDITORIA QUE ES DONDE SE GUARDARAN
POSTERIORMENTE UN REGISTRO CADA VEZ QUE SE EJECUTE UN TRIGGER.
DELIMITER $$
CREATE
TRIGGER `candidadto_after_update` BEFORE UPDATE
ON `candidato`
FOR EACH ROW BEGIN
END$$
DELIMITER ;
DESPUÉS DE CREAR EL TRIGGER PROBAMOS QUE CADA VEZ QUE SE REALIZA UN ACTUALIZAR DE CUALQUIER
CAMPO DE LA TABLA CANDIDATO SE GUARDA AUTOMÁTICAMENTE UN REGISTRO EN LA TABLE AUDITORIA.
CREAR TRIGERR PARA LA TABLA CANDIDATO CADA VEZ QUE SE CREE UN NUEVO REGISTRO
DELIMITER $$
CREATE
TRIGGER `candidato_after_insert` AFTER INSERT
ON `candidato`
FOR EACH ROW BEGIN
SET @estado = 'NUEVO REGISTRO';
INSERT INTO auditoria (id_candidato, tipo_accion) VALUES (NEW.identificacion,
@estado);
END$$