Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TRABAJO FINAL
COCHABAMBA-BOLIVIA
2019
TABLA DE CONTENIDOS
BIBLIOGRAFÍA ..................................................................................................................... 24
ÍNDICE DE TABLAS
MARCO REFERENCIAL
1.1. INTRODUCCIÓN
1
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
1.2.2. FORMULACIÓN DEL PROBLEMA
1.3. OBJETIVOS
1.4. ALCANCES
1.5. JUSTIFICACIÓN
2
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
puede conseguir la gestión eficiente de dicha información, lo cual es de mucha utilidad a la
hora de realizar la búsqueda de información de una persona determinada, la cual se puede
realizar en menos tiempo y de forma sencilla y eficiente.
3
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
CAPÍTULO 2
MARCO TEÓRICO
4
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
2.1.1. TIPOS DE BASES DE DATOS
5
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
• Bases de datos multidimensionales: Son bases de datos ideadas para desarrollar
aplicaciones muy concretas, como creación de Cubos OLAP. Básicamente no se diferencian
demasiado de las bases de datos relacionales (una tabla en una base de datos relacional podría
serlo también en una base de datos multidimensional). La diferencia está más bien a nivel
conceptual; en las bases de datos multidimensionales los campos o atributos de una tabla
pueden ser de dos tipos, o bien representan dimensiones de la tabla, o bien representan
métricas que se desean aprender.
• Bases de datos orientadas a objetos: Bastante reciente, y propio de los modelos
informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos
(estado y comportamiento). Incorpora todos los conceptos importantes del paradigma de
objetos: Encapsulación, Herencia y Polimorfismo. En bases de datos orientadas a objetos, los
usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de
datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura)
de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o
parámetros). La implementación (o método) de la operación se especifica separadamente y
puede modificarse sin afectar la interfaz.
6
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
• Entidad: Algo que se puede definir, como una persona, objeto, concepto u evento, que
puede tener datos almacenados acerca de este. Se piensa en las entidades como si fueran
sustantivos. Por ejemplo: un cliente, estudiante, auto o producto. Por lo general se muestran
como un rectángulo. Las entidades se clasifican en fuertes, débiles o asociativas. Una entidad
fuerte se puede definir únicamente por sus propios atributos, en cambio, una entidad débil no.
Una entidad asociativa es aquella que relaciona entidades (o elementos) dentro de un conjunto
de entidades.
Las claves de entidad se refieren a un atributo que únicamente define una entidad en un
conjunto de entidades. Las claves de entidad se dividen en superclave, clave candidata o clave
primaria. Una superclave es un conjunto de atributos (uno o más) que juntos definen una
entidad en un conjunto de entidades. Una clave candidata es una superclave mínima, es decir,
contiene el menor número posible de atributos para seguir siendo una superclave. Un conjunto
de entidades puede tener más de una clave candidata. Una clave primaria es una clave
candidata seleccionada por el diseñador de la base de datos para identificar únicamente al
conjunto de entidades. Además se tienen las claves extranjeras, que identifican la relación
entre las entidades.
• Relación: Cómo las entidades interactúan o se asocian entre sí. Se piensa en las
relaciones como si fueran verbos. Por ejemplo, un estudiante podría inscribirse en un curso.
Las dos entidades serían el estudiante y el curso, y la relación representada es el acto de
inscribirse, que conecta ambas entidades de ese modo. Las relaciones se muestran, por lo
general, como diamantes o etiquetas directamente en las líneas de conexión.
• Atributo: Una propiedad o característica de una entidad. A menudo se muestra como
un óvalo o círculo. Los atributos se clasifican en simples, compuestos y derivados, así como
de valor único o de valores múltiples. Los simples implican que el valor del atributo es
mínimo y ya no puede dividirse, como un número de teléfono. Los compuestos implican que
los subatributos surgen de un atributo. Los derivados hacen referencia a que los atributos se
calculan o derivan de otro atributo, por ejemplo, la edad se calcula a partir de la fecha de
nacimiento. Los de valores múltiples denotan más de un valor del atributo, como varios
números de teléfono para una persona. Los de valor único contienen solo un valor de atributo.
7
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
Los tipos se pueden combinar, por ejemplo, puede haber atributos de valor único simples o
atributos de múltiples valores compuestos.
• Cardinalidad: Define los atributos numéricos de la relación entre dos entidades o
conjuntos de entidades. Las tres relaciones cardinales principales son uno a uno, uno a muchos
y muchos a muchos. Un ejemplo de uno a uno sería un estudiante asociado a una dirección de
correo electrónico. Un ejemplo de uno a muchos (o muchos a uno, en función de la dirección
de la relación) sería un estudiante que se inscribe en muchos cursos, y todos esos cursos se
asocian a ese estudiante en particular. Un ejemplo de muchos a muchos sería los estudiantes
en grupo que están asociados a múltiples miembros de la facultad y a su vez los miembros de
la facultad están asociados a múltiples estudiantes.
8
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
datos. Surge como solución a la creciente variedad de los datos que integran las data
warehouses y podemos resumir el concepto como una colección de tablas (relaciones).
• Tabla: Es el nombre que recibe cada una de las relaciones que se establecen entre los
datos almacenados; cada nueva relación da lugar a una tabla. Están formadas por filas,
también llamadas tuplas, donde se describen los elementos que configuran la tabla (es decir,
los elementos de la relación establecida por la tabla), columnas o campos, con los atributos y
valores correspondientes, y el dominio, concepto que agrupa a todos los valores que pueden
figurar en cada columna.
• Claves: Elementos que impiden la duplicidad de registros, una de las grandes
desventajas que presentan otros modelos de organización y gestión de bases de datos. Existen
dos grandes tipos de claves: las claves primarias y las secundarias o externas.
• Restricción de integridad: Límites y restricciones que se imponen en las relaciones,
imprescindibles para mantener la significación correcta de la base de datos. Es un concepto
íntimamente vinculado a las reglas de integridad propias del modelo relacional, el
cumplimiento de las cuales está garantizado por las claves primarias y externas. Existen 4
tipos básicos de restricciones de integridad:
Los datos requeridos: Los campos o columnas siempre deben poseer un atributo o un
valor.
La comprobación de validez: Las tablas deben contener solo los datos
correspondientes a la correspondiente relación definida por cada tabla.
Las integridades de entidad y referencial: Las primeras aseguran que las claves
primarias posean un valor único para cada tupla, y las segundas que las claves principales y las
externas mantengan su integridad.
9
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
2.4. NORMALIZACIÓN
Hay algunas reglas en la normalización de una base de datos. Cada regla se denomina una
forma normal. Si se cumple la primera regla, se dice que la base de datos está en la primera
forma normal. Si se cumplen las tres primeras reglas, la base de datos se considera que está en
la tercera forma normal. Aunque son posibles otros niveles de normalización, la tercera forma
normal se considera el máximo nivel necesario para la mayor parte de las aplicaciones.
10
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
2.4.1. PRIMERA FORMA NORMAL
• Se deben crear tablas independientes para conjuntos de valores que se apliquen a varios
registros.
• Se relacionan estas tablas con una clave externa.
• Los registros no deben depender de nada que no sea una clave principal de una tabla,
una clave compuesta si es necesario.
11
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
Generalmente se accede a los datos mediante lenguajes de consulta, lenguajes de alto nivel
que simplifican la tarea de construir las aplicaciones. También simplifican las consultas y la
presentación de la información. Un SGBD permite controlar el acceso a los datos, asegurar su
integridad, gestionar el acceso concurrente a ellos, recuperar los datos tras un fallo del sistema
y hacer copias de seguridad.
• El motor de la base de datos acepta peticiones lógicas de los otros subsistemas del
SGBD, las convierte en su equivalente físico y accede a la base de datos y diccionario de datos
en el dispositivo de almacenamiento.
• El subsistema de definición de datos ayuda a crear y mantener el diccionario de datos y
define la estructura del fichero que soporta la base de datos.
• El subsistema de manipulación de datos ayuda al usuario a añadir, cambiar y borrar
información de la base de datos y la consulta para extraer información. Suele ser la interfaz
principal del usuario con la base de datos. Permite al usuario especificar sus requisitos de la
información desde un punto de vista lógico.
• El subsistema de generación de aplicaciones contiene utilidades para ayudar a los
usuarios en el desarrollo de aplicaciones. Usualmente proporciona pantallas de entrada de
datos, lenguajes de programación e interfaces.
• El subsistema de administración ayuda a gestionar la base de datos ofreciendo
funcionalidades como almacenamiento y recuperación, gestión de la seguridad, optimización
de preguntas, control de concurrencia y gestión de cambios.
12
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
registros y atributos. Los principales SBGD relacionales actualmente son: MySQL, MariaDB,
SQLite, PostgreSQL, Microsoft SQL Server, Oracle.
• Sistemas Gestores de bases de datos No Relacionales (NoSQL): Una base de datos
no relacional (NoSQL) es aquella base de datos que no requiere de estructuras de datos fijas
como tablas, no garantiza completamente las características ACID y escala muy bien
horizontalmente. Se utilizan en entornos distribuidos que han de estar siempre disponibles y
operativos y que gestionan un importante volumen de datos. Para la administración de este
tipo de bases de datos, actualmente los principales SGBD son: MongoDB, Redis, Cassandra,
Apache CouchDB.
La gran mayoría de los datos sensibles del mundo están almacenados en sistemas gestores
de bases de datos comerciales tales como Oracle, Microsoft SQL Server entre otros, y atacar
una base de datos es uno de los objetivos favoritos para los criminales. Mientras que la
atención generalmente se ha centrado en asegurar los perímetros de las redes por medio de,
firewalls, IDS / IPS y antivirus, cada vez más las organizaciones se están enfocando en la
seguridad de las bases de datos con datos críticos, protegiéndolos de intrusiones y cambios no
autorizados. Para ello, se pueden aplicar los siguientes principios de seguridad:
13
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
• Identificar la sensibilidad: Confeccionar un buen catálogo de tablas o datos sensibles
de las instancias de la base de datos. Además, se debe automatizar el proceso de identificación,
ya que estos datos y su correspondiente ubicación pueden estar en constante cambio debido a
nuevas aplicaciones o cambios producto de fusiones y adquisiciones. Para ello es conveniente
desarrollar o adquirir herramientas de identificación.
• Evaluación de la vulnerabilidad y la configuración: Evaluar la configuración de
bases de datos, para asegurar que no tiene huecos de seguridad. Esto incluye la verificación de
la forma en que se instaló la base de datos y su sistema operativo (por ejemplo, la
comprobación de privilegios de grupos de archivo -lectura, escritura y ejecución- de base de
datos y bitácoras de transacciones). Asimismo con archivos con parámetros de configuración
y programas ejecutables. Además, es necesario verificar que no se está ejecutando la base de
datos con versiones que incluyen vulnerabilidades conocidas; así como impedir consultas SQL
desde las aplicaciones o capa de usuarios. Para ello se puede considerar (como administrador):
14
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
podrían indicar la presencia de un ataque de inyección SQL, cambios no autorizados a los
datos, cambios en privilegios de las cuentas, y los cambios de configuración que se ejecutan
mediante de comandos de SQL. El monitoreo de usuarios privilegiados es requisito para la
gobernabilidad de datos y cumplimiento de regulaciones de privacidad. También, ayuda a
detectar intrusiones, ya que muchos de los ataques más comunes se hacen con privilegios de
usuario de alto nivel. El monitoreo dinámico es también un elemento esencial de la evaluación
de vulnerabilidad, que permite ir más allá de evaluaciones estáticas o forenses.
• Pistas de Auditoría: Se deben aplicar pistas de auditoría y generar trazabilidad de las
actividades que afectan la integridad de los datos, o la visualización de los datos sensibles.
Esto es un requisito de auditoría, y también es importante para las investigaciones forenses. La
mayoría de las organizaciones en la actualidad emplean alguna forma de manual de auditoría
de transacciones o aplicaciones nativas de los sistemas gestores de bases de datos. Sin
embargo, estas aplicaciones son a menudo desactivadas, debido a su complejidad, altos costos
operativos, problemas de rendimiento, la falta de segregación de funciones y la necesidad de
mayor capacidad de almacenamiento. Afortunadamente, se han desarrollado soluciones con un
mínimo de impacto en el rendimiento y poco costo operativo, basado en tecnologías de
agentes inteligentes.
• Autenticación, Control de acceso, y Gestión de derechos: No todos los datos y no
todos los usuarios son creados iguales. Se debe autenticar a los usuarios, garantizar la
rendición de cuentas por usuario, y administrar los privilegios para limitar el acceso a los
datos. Para ello es necesario implementar y revisar periódicamente los informes sobre
derechos de usuarios, como parte de un proceso de formal de auditoría. Se debe utilizar el
cifrado para hacer ilegibles los datos confidenciales, incluyendo el cifrado de los datos en
tránsito, de modo que un atacante no pueda escuchar en la capa de red y tener acceso a los
datos cuando se envía al cliente de base de datos.
15
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
CAPÍTULO 3
MARCO PRÁCTICO
El presente proyecto tiene por objeto la elaboración de una agenda de contactos personales
para registrar datos de números de teléfono, direcciones y correos electrónicos. Aplicando el
enfoque de la metodología Scrum, el proyecto se divide en 4 áreas esenciales: Gestión de
Bases de Datos, Back End, Front End e Integración. El presente documento se enfoca en el
área de Gestión de Bases de Datos, estructurando el desarrollo en dos sprints de trabajo.
16
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
3.2.2. NORMALIZACIÓN
Se aplican las reglas de normalización para generar la estructura de tablas del proyecto:
17
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
Tabla 6. Estructura de la Tabla Correo
IdContact EMailAddress EmailType
18
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
Tabla 10. Diccionario de Datos de la Tabla Correo
Nombre Tipo Tamaño Restricción Descripción
IdContact Autonúmerico 10 [0..9] Código autogenerado
para cada persona.
EMailAddress Texto 255 [A..Z, a..z, Dirección de correo
0..9, @, -, _, .] electrónico de la persona.
EmailType Texto 12 (Personal, Tipo de correo
Corporativo) electrónico de la persona.
Fuente: Elaboración propia.
19
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
En esta etapa se implementan las operaciones CRUD (Create, Read, Update, Delete) para
la información de contactos y números de teléfono, utilizando DTOs (Data Transfer Object).
Para ello se crea una serie de archivos de código en la solución creada en Visual Studio 2017
por el equipo de Back End. Además, para posibilitar el desarrollo del proyecto dividido en
áreas, se crea un repositorio público en GitHub para que todos los grupos puedan acceder a la
versión más actual del proyecto y contribuir en su desarrollo. El repositorio tiene la siguiente
dirección URL:
https://github.com/joseCespedesOlmos/Phone-Book
20
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
3.3.1. ARCHIVO DATA BASE STORAGE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommonDTO.Models_DTO;
namespace DatabaseStorage
{
public class DataBaseStorage
{
public List<ContactDTO> GetAllPersonas()
{
List<ContactDTO> lstPersona = new List<ContactDTO>();
return lstPersona;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommonDTO.Common_Interfaces;
using CommonDTO.Models_DTO;
namespace DatabaseStorage
{
21
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
class DataBaseProvider : IPhoneBookProvider
{
private DataBaseStorage _dataBaseProvider;
public object Persona { get; private set; }
public DataBaseProvider()
{
_dataBaseProvider = new DataBaseStorage();
}
22
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
}
else
{
this.ObjectContext.Telefono.AddObject(phone);
}
return true;
}
CAPÍTULO 4
CONCLUSIONES Y RECOMENDACIONES
4.1. CONCLUSIONES
• Se desarrolló con éxito una agenda automatizada de contactos personales para registrar
y gestionar la información referente a números de teléfono, direcciones y correos electrónicos;
de forma que permite lograr la eficiencia en la gestión de dicha información.
• Se realizó el diseño del modelo de datos para el almacenamiento de la información que
administra la agenda de contactos.
• Se efectuó el diseño de las interfaces para el registro de los datos correspondientes a la
agenda de contactos.
• Se realizó la codificación de las funcionalidades correspondientes para el registro de
los datos.
23
DESARROLLO DE UNA AGENDA AUTOMATIZADA DE CONTACTOS PERSONALES PARA LA
GESTIÓN DE INFORMACIÓN DE NÚMEROS DE TELÉFONO, DIRECCIONES Y CORREOS
ELECTRÓNICOS
• Se efectuó la integración de los módulos correspondientes para la implementación de la
agenda de contactos.
4.2. RECOMENDACIONES
• Para una realización integral del proyecto, es conveniente dividirlo en áreas (Gestión
de Bases de Datos, Back End, Front End e Integración), ya que este enfoque es el más
aplicado en los procesos de desarrollo de software en la actualidad.
• Para llevar un seguimiento eficiente del proyecto, es conveniente definir tareas
específicas para cada área. Su realización debe ser monitoreada por el área de Integración,
para garantizar la conclusión del proyecto en los tiempos establecidos.
• Se debe procurar una comunicación frecuente y fluida entre las áreas, para garantizar
que todas trabajan bajo los mismos parámetros, lo cual es de vital importancia para la
conclusión satisfactoria del proyecto.
BIBLIOGRAFÍA
• Conceptos básicos del diseño de una base de datos. Recuperado el 10 de junio de 2019
de https://support.office.com/es-es/article/conceptos-b%C3%A1sicos-del-dise%C3%B1o-de-
una-base-de-datos-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5
• Qué es un diagrama entidad-relación. Recuperado el 10 de junio de 2019 de
https://www.lucidchart.com/pages/es/que-es-un-diagrama-entidad-relacion.
• Modelo relacional en la gestión de bases de datos. Recuperado el 10 de junio de 2019
de https://blog.es.logicalis.com/analytics/conceptos-basicos-del-modelo-relacional-en-la-
gestion-de-bases-de-datos
• Fundamentos de la normalización de bases de datos. Recuperado el 10 de junio de
2019 de https://support.microsoft.com/es-bo/help/283878/description-of-the-database-
normalization-basics
• Principios Básicos de Seguridad en Bases de Datos. Recuperado el 10 de junio de
2019 de https://revista.seguridad.unam.mx/numero-12/principios-basicos-de-seguridad-en-
bases-de-datos
24