universidad tecnológica de querétaro

Anuncio
UTEQ
Firmado digitalmente por
UTEQ
Nombre de reconocimiento
(DN): cn=UTEQ, o=UTEQ,
ou=UTEQ,
[email protected]
, c=MX
Fecha: 2015.09.11 10:19:42
-05'00'
UNIVERSIDAD TECNOLÓGICA DE
QUERÉTARO
Nombre del proyecto:
“REINGENIERÍA DE BASE DE DATOS”
Empresa:
IGLESIA UNIDAD CRISTIANA DE QUERÉTARO A.R.
Memoria que como parte de los requisitos para obtener el título de:
INGENIERO EN TECNOLOGÍAS DE LA INFORMACIÓN Y
COMUNICACIÓN
Presenta:
BREÑA DE JESÚS LUIS FERNANDO
Asesor en la UTEQ
Asesor en la Organización
LIA. Silvia Elena Ortiz Maldonado
Lic. Jorge Cupido Sánchez.
Santiago de Querétaro, Qro. Septiembre del 2015
Resumen
El presente documento detalla la metodología y las actividades realizadas para el
desarrollo del proyecto Reingeniería de base de datos de la Iglesia Unidad
Cristiana de Querétaro. Dicha base de datos se desarrolló con el lenguaje SQL
mediante el entorno de diseño MysqlWorkbench. El proyecto surge de la
necesidad de unificar las bases de datos existentes dentro de la Iglesia Unidad
Cristiana. Como resultado se obtuvo una base de datos unificada e íntegra, para
llevar un mejor control de la información y así tomar decisiones de manera más
eficiente. Además de generar la respectiva documentación para posibles análisis y
modificaciones futuras. Este trabajo sirvió de manera exitosa para adentrarse y
aprender de una manera adecuada como se realiza un proyecto de esta magnitud
en una empresa, teniendo como resultado el aprendizaje de una correcta
implementación de la base de datos.
(Palabras clave SQL, Integridad, Eficiencia)
2
Summary
When I enter my internship, I hope to meet experienced professional that allow me
to learn and get better knowledge. Also I hope to handle new technologies and
systems to according to my interest, learn to analyze, design and implement
system to generate higher quality software. Another part important for me to learn
is to handle project management that allows me to keep track of important projects.
I hope to learn new software development methodologies. Personally, I hope to
learn to manage my time to keep better track of my activities.it is likely that many
things are handled through the English language so I hope to learn the language
practicing it as one of my priorities. I hope to learn to communicate effectively to
help me have better relations. It is important to learn to work in teams to perform
activities in a more effective way and finally the flexibility to adapt to new needs
that the company can ask me.
3
Índice
Página
Resumen…………………………………………………………………….……………..2
Summary…………………………………………………………………………………...3
Índice……………………………………………………………………………………….4
l. INTRODUCCIÓN………………………………………………………………………..5
II. ANTECEDENTES…………………………………………………..………………….6
III. JUSTIFICACIÓN…………………………………………………..………...…….…..8
IV. OBJETIVOS………………………………………………………...………………….9
lV.l. OBJETIVOS ESPECÍFICOS………………………………………..……....9
V. ALCANCE………………………………………………………..…………...............11
VI. ANÁLISIS DE RIESGOS…………………………….………..…………………….13
VII. FUNDAMENTACIÓN TEÓRICA…………………………………………....……..15
VIII. PLAN DE ACTIVIDADES…………………………………………………..…..….21
IX. RECURSOS MATERIALES Y HUMANOS………………………………..…..….22
X. DESARROLLO DEL PROYECTO …………………………………………....……24
X.l. IDENTIFICACIÓN DEL PROBLEMA………………………………..……24
X.ll. RECOPILACIÓN DE INFORMACIÓN……………………………………24
X.lll. MODELO ENTIDAD-RELACIÓN………………………………...……….27
X.lV. MODELO RELACIONAL………………………………………….………28
X.V. DICCIONARIO DE DATOS……………………………………………….29
XI. RESULTADOS OBTENIDOS………………………………………….……..……41
XII. CONCLUSIONES Y RECOMENDACIONES……………………….……..…….42
XIII. ANEXOS
XIV. BIBLIOGRAFÍA
4
I.
Introducción
El documento que se presenta a continuación trata sobre la reingeniería de
base de datos en la Iglesia Unidad Cristiana de Querétaro A.R., realizando el
respectivo análisis, creación e implementación de bases de datos. La cual ayudará
en la administración y seguimiento de los procesos realizados, para que estos
sean más eficientes y precisos.
En la Iglesia Unidad Cristiana de Querétaro A.R., se detectaron deficiencias en
las bases de datos que se utilizan para la administración y control de la
información. Por tal motivo se ha decidido realizar el proyecto Reingeniería de
base de datos.
Para esto se lleva a cabo la recopilación de información, para realizar el
análisis y obtener la identificación de las entidades principales. Posteriormente se
realiza la propuesta del nuevo diseño de la base de datos mediante un modelo
Entidad-Relación y Relacional. Al finalizar el diseño se genera el script para la
implementación de la nueva base de datos.
5
II.
Antecedentes
La Iglesia Unidad Cristiana de Querétaro y su crecimiento dentro del
departamento de TI han contribuido exitosamente con el avance hacia las metas
que se han establecido. Actualmente se comenzaron a realizar las revisiones para
continuar con la escalabilidad del departamento en sus diferentes áreas, y nos
encontramos con la falta de integridad en los datos que se manejan, esto debido a
que los datos se encuentran dispersos y duplicados en distintos tipos de archivos,
como lo son hojas de cálculo o distintas bases de datos y físicamente en
documentos escritos.
Una base de datos (cuya abreviatura es BD) es una entidad en la cual se
pueden almacenar datos de manera estructurada, con la menor redundancia
posible. Las ventajas de usar una base de datos bien estructurada son las
siguientes:

Es Compacto: No hacen falta archivos de papeles que pudieran
ocupar mucho espacio.

Es Rápido: La máquina puede obtener y modificar datos con mucha
mayor velocidad que un ser humano. Así es posible satisfacer con
rapidez consultas de casos particulares, del momento, sin necesidad
de búsquedas visuales o manuales que refieren mucho tiempo.

Es menos Laborioso: Se elimina gran parte del tedio de manera
manual. Las tareas mecánicas siempre serán mejor realizadas por
las máquinas.
6

Es Actual: Se dispone en cualquier momento de información precisa
y al día.

Cómoda: Al tener la información en un mismo sitio, ahorraremos
tiempo y trabajo
En estos casos el área de Base de Datos es de vital importancia ya que
mediante su correcta implementación los datos son almacenados y sirven como
fuente de información para los sitios web además de ser esenciales en la toma de
decisiones de gran importancia dentro de la
Querétaro.
7
Iglesia Unidad Cristiana de
III.
Justificación
Debido a la creciente necesidad de que la Iglesia Unidad Cristiana de
Querétaro utilice la tecnología en sus principales procesos de negocio, y con el
objetivo de que estas tecnologías apoyen la toma de decisiones, es indispensable
la implementación de una base de datos, para gestionar de manera óptima la
información manejada en los principales procesos de negocio que tiene la
empresa.
El principal motivo de este proyecto, tiene que ver con la inclusión de la
tecnología primeramente como soporte a los procesos de negocio que se vienen
llevando a cabo en la empresa, más precisamente en la Iglesia Unidad Cristiana
de Querétaro, para el manejo de sus distintas áreas operativas.
Lo que se busca es obtener óptimos resultados, a través de una administración
correcta de su información, esto es, que la empresa utilice la tecnología como su
primer recurso fundamental para poder realizar todos los procesos involucrados,
en un ambiente sistematizado, el cual sea totalmente confiable y oportuno para
cuando se necesite extraer información del mismo.
8
IV.
Objetivos
Analizar y re-diseñar la base de datos de la Iglesia Unidad Cristiana de
Querétaro A.R. para mantener íntegros los datos de la misma y poder utilizarlos en
la toma de decisiones.
IV.I
Objetivos específicos

Análisis de requerimientos.
Se establece contacto con las áreas involucradas, para identificar las
funciones, flujo, estructura y la asociación de la información necesaria.

Planeación de la nueva base de datos.
En base al análisis se fijan metas y se estipulan pasos para llegar a ellas. A
estas metas se les asignan tiempos para su cumplimiento.

Diseño conceptual.
Ya con la planeación realiza y en base al análisis de requisitos se comienza
con el diseño conceptual, este consiste en crear el diagrama EntidadRelación el cual representa la realidad a través de un esquema gráfico.

Diseño lógico.
En esta etapa se genera la transformación del esquema Entidad-Relación a
un esquema Relacional, representado en forma de tablas y relaciones.
9

Diseño físico.
Este proceso da como resultado un esquema físico de la base de datos, el
cual se genera a través de un Sistema Gestor de Base de Datos específico,
el cual es elegido en la planeación.
10
V.
Alcance
Se busca producir un cambio en la situación encontrada de la dispersión de la
información de la Unidad Cristiana de Querétaro, lo cual dificulta el manejo
efectivo de esa información. Siendo necesario reestructurar la base de datos;
levantar, actualizar e incorporar la información necesaria.
En este proyecto se propone realizar durante el período del 18 de Mayo al
viernes 21 de Agosto del 20015, desarrollando las siguientes fases:
1. Fase de preparación
Esta fase se desarrollará durante el periodo del 18 de Mayo al 5 de Junio
del 2015. En la cual se realizará el plan de trabajo, así como la
documentación de las bases de datos existentes.
2. Fase de análisis
Esta fase se desarrollara durante el periodo del 8 de Junio al 26 de Junio
del 2015. En esta fase se realizará el análisis de los requerimientos para
captar la información adecuada para el diseño de la base de datos.
3. Fase de diseño conceptual
Esta fase se desarrollará durante el periodo del 24 de Junio al 9 de Julio del
2015. Después del análisis en esta fase se diseñará el diagrama entidad
relación.
11
4. Fase de diseño lógico
Esta fase se desarrollará durante el periodo del 10 de Julio al 27 de Julio
del 2015. En base al diagrama relacional se diseñara el diagrama entidadrelación.
5. Fase de diseño físico
Esta fase se desarrollara durante el periodo del 28 de Julio al 21 de Agosto
del 2015. En la última fase se implementará el diseño de la base de datos
obtenida mediante el modelo entidad-relación mediante el DBMS para su
creación y administración.
12
VI.
PROBABILIDAD
VALOR NUMÉRICO
Muy Improbable
Relativamente Probable
Probable
Muy Probable
Casi Certeza
0.1
0.3
0.5
0.7
0.9
Análisis de riesgos
IMPACTO
VALOR NUMÉRICO
Muy Bajo
Bajo
Moderado
Alto
Muy Alto
0.05
0.10
0.20
0.40
0.80
Tabla 1. Probabilidad
CÓDIGO
DEL
RIESGO
DESCRIPCIÓN
CAUSA RAÍZ
TRIGGER
DEL
ENTREGABLE
AFECTADO
ESTIMACIÓN
DE
PROBABILIDAD
S
R001
R002
Modificación del
Cronograma
Falta de información y
de análisis
Alteración de
actividades
Errores durante la
recopilación de
información
Retraso en el
desarrollo del
proyecto
Retraso en el
desarrollo del
proyecto
DE
RIESGO PROBABILIDAD
IMPACTO
mayor
a 0.50
menor a
menor a
menor a
menor a
X
0.50
0.30
0.10
0.05
Tabla 2. Tipo de Riesgo
S
RIESGO
TIPO
Muy Alto
Alto
Moderado
Bajo
Muy Bajo
Cronograma de
actividades
Proyecto completo
13
0.3
0.3
OBJETIVO
AFECTADO
ESTIMACIÓN
DE IMPACTO
Alcance
0.10
0.20
Tiempo
Costo
Calidad
0.20
TOTAL PROBABILIDAD X
IMPACTO
Alcance
Tiempo
0.20
Costo
0.40
Calidad
TOTAL PROBABILIDAD X
IMPACTO
PROB X
TIPO DE
IMPACTO
RIESGO
.03
.06
.06
Moderado
.15
.06
.12
0.18
Moderado
R003
R004
R005
R006
R007
Modificación en los
requerimientos
Mal funcionamiento
Cambio de
requerimientos
Diseño
Nuevo análisis del
ineficiente de la
Todo el proyecto
proyecto
BD
Solicitud de adicionales
Identificación de
no
nuevos
contemplados en el
entregables
alcance
Incumplimiento de los
entregables
Desaprobación de los
informes mensuales o
informe final
Diagramas E/R,
Relacional y
Nuevo análisis del
proyecto
Diccionario de
Datos
Falta de
coordinación y
comunicación
El informe no está
de acuerdo a los
términos de
referencia del
proyecto.
Modificación
cronograma de
actividades y
entregables
Detección de
pequeños
incumplimientos o
signos de no
calidad de servicio
Revisión y
actualización de
los informes
Todo el proyecto
Documento de
acuerdo a la fase
0.3
0.3
0.5
0.1
Alcance
0.10
0.20
Tiempo
Costo
0.10
Calidad
TOTAL PROBABILIDAD X
IMPACTO
Alcance
Tiempo
0.20
Costo
0.20
Calidad
TOTAL PROBABILIDAD X
IMPACTO
Alcance
0.40
0.20
Tiempo
Costo
Calidad
TOTAL PROBABILIDAD X
IMPACTO
Alcance
Tiempo
0.30
.03
.06
.06
Moderado
.12
.06
.06
Moderado
0.12
.2
.1
Moderado
0.3
Costo
Muy Bajo
Calidad
TOTAL PROBABILIDAD X
IMPACTO
0.03
Alcance
Tiempo
0.20
.06
0.40
.12
Costo
Informes
0.3
Calidad
Moderado
TOTAL PROBABILIDAD X
IMPACTO
Tabla 3. Tabla descripción de riesgo
14
0.18
VII.
Fundamentación teórica
A continuación se citan algunos conceptos que nos ayudan a conocer las
bases para el desarrollo del proyecto.
De acuerdo con el estudio de Edgar Frank Cood nos menciona lo siguiente:
Una Base de Datos es una colección de archivos interrelacionados creados
con un Sistema Manejador de Bases de Datos (DBMS). El contenido de una base
se obtiene combinando datos de todas las diferentes fuentes en una organización,
de tal manera que los datos estén disponibles para todos los usuarios y los datos
redundantes pueden eliminarse o por lo menos minimizarse.
Las bases de datos son conjuntos de datos pertenecientes a un mismo
contexto y almacenados de forma sistemática para ser usados después; este
conjunto de datos tiene que estar estructurado, no debe ser redundante, además
su implementación debe ser accesible en tiempo real y la manipulación de los
usuarios debe ser amigable.
Las bases de datos proporcionan la infraestructura requerida para los sistemas
de apoyo a la toma de decisiones y para los sistemas de información estratégicos,
ya que éstos explotan la información contenida en las bases de datos de la
organización para apoyar el proceso de toma de decisiones o para lograr ventajas
competitivas.
Una Base de Datos se conforma de cuatro componentes principales
brevemente descritos a continuación:
15

Datos.- Deben recoger toda la información necesaria, sin que exista
repetición de la misma dentro de la base.

Hardware.- Es el soporte físico que permite almacenar la información de la
DB.

Software.- Permite interactuar con la base de datos de manera eficiente.

Personal.- Las bases de datos son manipuladas por personal con diferentes
perfiles, entre ellos podemos mencionar:
o Administradores del DBMS (DBA por sus siglas en inglés).
Encargado del control y manejo de la Base.
o
Administradores de la base (DBO por sus siglas en inglés).
Encargado de diseñar la base de datos, definir las estructuras de
almacenamiento y métodos de acceso (tablas), modificar el diseño y
organización física de la Base y una de las más importantes es el
otorgar permisos de acceso a usuarios dentro de la base.
o Programadores de aplicaciones o Desarrolladores. Diseñan y
programan las aplicaciones necesarias para la utilización de las
bases de datos.
o Usuarios. Aquellos que utilizan el sistema de base de datos por
medio de una interfaz gráfica e interactúan con los mismos
dependiendo de los permisos que le hayan sido otorgados.
16
MySQL
Es un sistema de gestión de bases de datos relacional, fue creada por la
empresa sueca MySQL AB, la cual tiene el copyright del código fuente del servidor
SQL, así como también de la marca.
MySQL es un software de código abierto, licenciado bajo la GPL (General
Public License), aunque MySQL AB distribuye una versión comercial, en lo único
que se diferencia de la versión libre, es en el soporte técnico que se ofrece, y la
posibilidad de integrar este gestor en un software propietario, ya que de otra
manera, se vulneraría la licencia GPL.
El lenguaje de programación que utiliza MySQL es Structured Query
Language (SQL) que fue desarrollado por IBM en 1981 y desde entonces es
utilizado de forma generalizada en las bases de datos relacionales.
Inicialmente, MySQL carecía de algunos elementos esenciales en las bases
de datos relacionales, tales como integridad referencial y transacciones. A pesar
de esto, atrajo a los desarrolladores de páginas web con contenido dinámico,
debido a su simplicidad, de tal manera que los elementos faltantes fueron
complementados por la vía de las aplicaciones que la utilizan. Poco a poco estos
elementos faltantes, están siendo incorporados tanto por desarrolladores internos,
como por desarrolladores de software libre.
En las últimas versiones se pueden destacar las siguientes características
principales:
17

El principal objetivo de MySQL es velocidad y robustez.

Soporta gran cantidad de tipos de datos para las columnas.

Gran portabilidad entre sistemas, puede trabajar en distintas plataformas y
sistemas operativos.

Cada base de datos cuenta con 3 archivos: Uno de estructura, uno de datos
y uno de índice y soporta hasta 32 índices por tabla.

Aprovecha
la
potencia
de
sistemas
multiproceso,
gracias
a
su
implementación multi hilo.

Flexible sistema de contraseñas (passwords) y gestión de usuarios, con un
muy buen nivel de seguridad en los datos.

El servidor soporta mensajes de error en distintas lenguas
MySQL Workbench
Es una herramienta que permite modelar diagramas de entidad-relación
para bases de datos MySQL. Puede utilizarse para diseñar el esquema de una
base de datos nueva, documentar una ya existente o realizar una migración
compleja.
La aplicación elabora una representación visual de las tablas, vistas,
procedimientos almacenados y claves extranjeras de la base de datos. Además,
es capaz de sincronizar el modelo en desarrollo con la base de datos real.
MySQL Workbench también puede generar el script necesario para crear la
base de datos que se ha dibujado en el esquema.
18
phpMyAdmin
phpMyAdmin es un software de código abierto, diseñado para manejar la
administración y gestión de bases de datos MySQL a través de una interfaz gráfica
de usuario. Escrito en PHP, phpMyAdmin se ha convertido en una de las más
populares herramientas basadas en web de gestión de MySQL. phpMyAdmin
viene con una documentación detallada y está siendo apoyado por un gran multiidioma de la comunidad.
phpMyAdmin es cada vez mayor lista de características soporta todas las
operaciones de
uso
común
tales como
la
navegación,
pasando, crear,
modificar las bases de datos MySQL, las tablas, campos e índices.
Además, phpMyAdmin le permite administrar usuarios MySQL y privilegios
de usuario. Otra característica común es phpMyAdmin su función de importación.
Con phpMyAdmin, importar base de datos MySQL de copia de seguridad es fácil y
se puede importar un volcado SQL o CSV con unos clics del ratón. También, usted
puede exportar su base de datos en formato CSV, SQL, XML, Excel y otros.
DIA
Dia es una aplicación informática de propósito general para la creación de
diagramas. Está concebido de forma modular, con diferentes paquetes de formas
para diferentes necesidades.
Dia está diseñado como un sustituto de la aplicación comercial Visio de Microsoft.
Se puede utilizar para dibujar diferentes tipos de diagramas. Actualmente se
19
incluyen
diagramas
entidad-relación,
diagramas UML, diagramas
de
flujo,
diagramas de redes, diagramas de circuitos eléctricos, etc.
El formato para leer y almacenar gráficos es XML (eXtensible Markup Language). Puede
producir salida en los formatos EPS, SVG y PNG.
20
VIII.
Plan de actividad
Imagen 1. Plan de Actividades
21
IX.
Recursos materiales y humanos
Recursos Materiales
Nombre
PC
Impresora
MySQL Workbench
DIA
PHPMyAdmin
MS Office
Descripción
PC con 8 Gb de
memoria RAM, 500
Gb de disco duro,
procesador Intel core
i5.
Impresora láser para
impresión de
documentación.
Software para
generación diseño
lógico de base de
datos. (Diagrama
E/R)
Software para
generación de diseño
conceptual de base
de datos. (Diagrama
relacional)
Software para la
creación y
administración de la
base de datos.
Paquetería de Office
para documentación
del proyecto.
Cantidad
Costo
1
MXN $
8000.00
1
MXN $
1500.00
1
Software
Libre
1
Software
Libre
1
Incluido en
Hosting
1
MXN $850.00
(anualidad)
Tabla 4. Recursos Materiales
22
Recursos Humanos
Nombre
Luis Fernando
Breña De Jesús
Rol
Analista,
programador
Categoría
Ing.
Iván Israel
Morales Valencia
Analista
Ing.
Grecia Melina
Méndez Malagón
Líder de proyecto
Ing.
Tabla 5. Recursos Humanos
23
Responsabilidades
Responsable del
análisis, planeación,
diseño y
programación de
bases de base de
datos.
Análisis y diseño de
diagramas UML
para desarrollo de
base de datos.
Revisión y
aceptación del
proyecto.
X.
X.I
Desarrollo del proyecto
Identificación del problema
La Iglesia Unidad Cristiana de Querétaro actualmente maneja 3 sistemas:
Administración, Eventos y UCKids; Los cuales funcionan en bases de datos
distintas que no están documentadas. Después del análisis se definió que se
requiere diseñar una base de datos única que maneje los 3 sistemas y que pueda
ser escalable en caso de ser necesario.
X.II
Recopilación de información
Para esta base de datos se manejan 3 áreas:

Administración UC

UCKids

Congresos
Para comenzar el proyecto se realizó la documentación de las bases de datos
existentes.
Después se procede a realizar la identificación de entidades principales por
área, las cuales son las siguientes:

Entidades Generales
o Persona
24
o Dirección

Entidades Administración UC
o Miembro
o Usuario
o TipoUsuario
o Departamento
o Requisición
o Cotización
o Archivo
o Proveedor
o Gastos
o TipoGastos
o Ingresos
o TipoIngresos

Entidades UCKids
o Niño
o Tutor
o Activo
o Grupo
25
o Entrega
o Totales

Entidades Congresos
o Evento
o Taller
o Asistente
o Registro
26
X.III Modelo Entidad-Relación
A continuación se muestra el diagrama Entidad-Relación obtenido del análisis:
Imagen 2. Modelo Entidad-Relación
27
X.IV Modelo Relacional
A continuación se muestra el diagrama Relacional obetnido del analisis:
Imagen 3. Modelo Relacional
28
X.V Diccionario de datos
Después de realizar el diseño conceptual mediante el diagrama relacional
se procede a realizar el diccionario de datos que refleja las propiedades de las
tablas obtenidas. Anexo 1.
Activo
Columna
Tipo
PK
NN
FK
id_activo
Int
X
X
Clave
Varchar(45)
X
Recoge
Varchar(45)
X
Fk_niño
Int
X
x
Fk_grupo
Int
X
x
Fecha
Date
x
UQ
AI
Default
Comentario
Default
Comentario
X
Tabla 6. Activo
Archivo
Columna
Tipo
PK
NN
Id_archivo
Int
x
X
Nom_archivo
Varchar(45)
FK
UQ
AI
X
x
Tabla 7. Archivo
29
Área de servicio
Columna
Tipo
PK
NN
Id_areaservicio
Int
x
X
Nom_areaservicio
Varchar(45)
FK
UQ
AI
Default
Comentario
Default
Comentario
Default
Comentario
X
X
Tabla 8. .AreaServicio
Asistente
Columna
Tipo
PK
NN
Id_asistente
Int
x
X
Iglesia
Varchar(45)
FK
UQ
AI
x
Tabla 9 .Asistente
Asistente-Evento
Columna
Tipo
Fk_asistente
PK
NN
FK
Int
x
X
Fk_evento
Int
X
X
Fecha
Date
X
UQ
AI
Tabla 10. Asistente-Evento
30
Asistente-Taller
Columna
Tipo
Fk_asistente
PK
NN
FK
Int
X
x
Fk_taller
Int
X
X
fecha
Date
x
UQ
AI
Default
Comentario
Default
Comentario
Tabla 11. Asistente-Taller
Cotización
Columna
Tipo
PK
NN
Id_cotizacion
Iny
x
X
Fec_pago
Date
Fec_alta
Date
X
Cantidad
Int
X
Fk_proveedor
Int
X
Fk_archivo
Int
FK
UQ
AI
x
X
X
Tabla 12. Cotización
31
Departamento
Columna
Tipo
PK
NN
Id_departamento
Int
x
X
Nom_depto
Varchar(45)
X
Fecha
Date
X
FK
UQ
AI
Default
Comentario
Default
Comentario
x
Tabla 13. Departamento
Dirección
Columna
Tipo
PK
NN
Id_direccion
Int
X
X
Calle
Varchar(45)
Num_int
Int
Num_ext
Int
Colonia
Varchar(45)
Municipio
Varchar(45)
Estado
Varchar(45)
FK
UQ
AI
X
Tabla 14. Dirección
32
Entrega
Columna
Tipo
PK
NN
Id_entrega
Int
X
X
Fec_entrega
Date
X
Fk_activo
Int
X
FK
UQ
AI
Default
Comentario
Default
Comentario
X
X
Tabla 15. Entrega
Evento
Columna
Tipo
PK
NN
Id_evento
Int
X
X
Nom_evento
Varchar(45)
X
Fec_evento
Date
X
Fk_usuario
Int
X
FK
UQ
AI
X
X
Tabla 16. Evento
33
Gastos
Columna
Tipo
PK
NN
FK
Id_gastos
Int
X
X
Nom_gasto
Varchar(45)
X
Total
Doublé
X
Info
Varchar(45)
Fec_alta
Date
X
Fk_usuario
Int
X
X
Fk_tipogasto
Int
X
X
UQ
AI
Default
Comentario
Default
Comentario
X
Tabla 17. Gastos
Grupo
Columna
Tipo
PK
NN
Id_grupo
Int
X
X
Nom_grupo
Varchar(45)
Descripcion
Varchar(100)
FK
UQ
AI
X
X
Tabla 18. Grupo
34
Ingresos
Columna
Tipo
PK
NN
FK
Id_ingreso
Int
X
X
Fk_depto
Int
X
X
Fk_usuario
Int
X
X
UQ
AI
Default
Comentario
Default
Comentario
X
Tabla. Ingresos
Niño
Columna
Tipo
PK
NN
FK
Id_niño
Int
X
X
Alergias
Varchar(45)
Extras
Varchar(45)
Fk_persona
Int
X
X
Fk_tutor
Int
X
X
UQ
AI
X
Tabla 19. Niño
35
Persona
Columna
Tipo
PK
NN
Id_persona
Int
X
X
Nombre
Varchar(45)
Ap_paterno
Varchar(45)
Ap_materno
Varchar(45)
Fec_nac
date
Email
Varchar(45)
Genero
Varchar(20)
Fk_dir
int
FK
UQ
AI
Default
Comentario
Default
Comentario
X
X
X
X
X
Tabla 20. Persona
Proveedor
Columna
Tipo
PK
NN
Id_proveedor
Int
x
X
Nom_proveedor
Varchar(45)
X
Rfc
Varchar(45)
X
Razon_social
Varchar(45)
Fec_alta
Date
Nom_contacto
Varchar(45)
FK
UQ
AI
X
X
36
telefono
Int
banco
Varchar(45)
clave
Varchar(45)
Tabla 21. Proveedor
Requisición
Columna
Tipo
PK
NN
Id_requisicion
Int
X
X
Nom_producto
Varchar(45)
Descripcion
Varchar(45)
Info
Varchar(45)
Fk_depto
Int
Fk_usuario
Int
X
Fec_alta
Date
X
Fk_cotizacionaprobada
Int
FK
UQ
AI
X
X
X
X
X
Tabla 22. Requisición
37
Default
Comentario
Requisicion-Cotizacion
Columna
Tipo
Fk_requisicion
Fk_cotizacion
PK
NN
FK
Int
X
X
Int
x
x
UQ
AI
Default
Comentario
Tabla 23. Requisición-Cotización
Taller
Columna
Tipo
PK
NN
Id_taller
Int
X
X
Nom_taller
Varchar(45)
X
Fk_avento
Int
X
FK
UQ
AI
Default
Comentario
Default
Comentario
X
X
Tabla 24. Taller
TipoGasto
Columna
Tipo
PK
NN
Id_tipogasto
Int
X
X
Nom_tipo
Varchar(45)
FK
UQ
AI
X
Tabla 25. Tipo de Gasto
38
Tutor
Columna
Tipo
PK
NN
Id_tutor
Int
X
X
Fk_persona
Varchar(45)
X
FK
UQ
AI
Default
Comentario
AI
Default
Comentario
X
Tabla 26. Tutor
Usuario
Columna
Tipo
PK
NN
FK
Id_usuario
Int
X
X
Nom_usuario
Varchar(45)
X
Password
Varchar(45)
X
Fk_miembro
Int
X
X
Fk_tipousuario
Int
X
X
UQ
X
Tabla 27. Usuario
39
Miembro
Columna
Tipo
PK
NN
Id_miembro
Int
X
X
Fec_alta
Date
Fk_persona
Int
Fk_areaservicio
Int
X
Fk_depto
Int
X
X
FK
UQ
AI
X
X
Tabla 28. Miembro
40
Default
Comentario
XI.
Resultados obtenidos
Al término de este proyecto se obtuvo como resultado la base de datos
funcional y exitosa dentro de la Iglesia Unidad Cristiana de Querétaro A.R.,
cumpliendo los objetivos planteados al principio del mismo.
Este proyecto generó un impacto en los sistemas que se manejan en la Iglesia
Unidad Cristiana, los cuales son: UC Kids, Administración y Eventos, estos
sistemas manejan una gran cantidad de datos que serán almacenados en la
nueva base de datos desarrollada.
41
XII.
Conclusiones y recomendaciones
En este proyecto hemos podido observar el método de aplicación de análisis
detallado para obtener las diferentes entidades y relaciones de la base de datos y
posteriormente comenzar con el nuevo diseño e implementación de la misma,
mediante el uso de los diferentes programas para la creación de una base de
datos como es el caso de MySQL Workbench, Día, PhpMyAdmin. Después de
realizar las pruebas a la base de datos, el éxito dependería del buen uso de la
misma, conociendo sus funciones específicas y alcances.
Durante el periodo de este proyecto he logrado adquirir nuevos conocimientos
técnicos para el desarrollo de base de datos y administración de proyectos que me
permiten crecer de manera profesional, además, como persona he aprendido a
trabajar en equipo, administrar el tiempo de mis actividades y expresarme de una
manera más efectiva.
Para darle seguimiento a la base de datos ya establecida se recomienda que
en caso de surgir alguna modificación a lo ya determinado se tenga en cuenta lo
documentado en este proyecto para una correcta implementación cumpliendo con
la metodología preestablecida.
42
Xlll. Anexos
Anexo 1. Diseño Lógico de la Base de Datos.
Imagen 4. Diseño Lógico
Anexo 2. Script de la Base de Datos.
-- MySQL Workbench Forward Engineering
-- ------------------------------------------------------ Schema UC
-- ----------------------------------------------------CREATE SCHEMA IF NOT EXISTS `UC` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `UC` ;
-- ------------------------------------------------------ Table `UC`.`Direccion`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `UC`.`Direccion` (
`idDireccion` INT NOT NULL AUTO_INCREMENT,
`calle` VARCHAR(45) NULL,
`num_int` INT NULL,
`num_ext` INT NULL,
`colonia` VARCHAR(45) NULL,
`municipio` VARCHAR(45) NULL,
`estado` VARCHAR(45) NULL,
`cp` VARCHAR(45) NULL,
PRIMARY KEY (`idDireccion`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Persona`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Persona` (
`idPersona` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(45) NOT NULL,
`ap_materno` VARCHAR(45) NULL,
`ap_paterno` VARCHAR(45) NULL,
`fec_nac` DATE NOT NULL,
`email` VARCHAR(45) NULL,
`genero` VARCHAR(45) NOT NULL,
`fkDireccion` INT NOT NULL,
`tel` INT NULL,
`tel2` INT NULL,
PRIMARY KEY (`idPersona`),
INDEX `fk_Persona_Direccion_idx` (`fkDireccion` ASC),
CONSTRAINT `fk_Persona_Direccion`
FOREIGN KEY (`fkDireccion`)
REFERENCES `UC`.`Direccion` (`idDireccion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`AreaServicio`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`AreaServicio` (
`idAreaServicio` INT NOT NULL,
`nombre_area` VARCHAR(45) NULL,
PRIMARY KEY (`idAreaServicio`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Departamento`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Departamento` (
`idDepartamento` INT NOT NULL,
`nom_depto` VARCHAR(45) NULL,
`fecha` DATE NULL,
PRIMARY KEY (`idDepartamento`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`miembro`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`miembro` (
`idmiembro` INT NOT NULL AUTO_INCREMENT,
`fec_alta` DATE NULL,
`fkPersona` INT NOT NULL,
`fkAreaServicio` INT NOT NULL,
`fkDepartamento` INT NOT NULL,
PRIMARY KEY (`idmiembro`),
INDEX `fk_miembro_Persona1_idx` (`fkPersona` ASC),
INDEX `fk_miembro_AreaServicio1_idx` (`fkAreaServicio` ASC),
INDEX `fk_miembro_Departamento1_idx` (`fkDepartamento` ASC),
CONSTRAINT `fk_miembro_Persona1`
FOREIGN KEY (`fkPersona`)
REFERENCES `UC`.`Persona` (`idPersona`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_miembro_AreaServicio1`
FOREIGN KEY (`fkAreaServicio`)
REFERENCES `UC`.`AreaServicio` (`idAreaServicio`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_miembro_Departamento1`
FOREIGN KEY (`fkDepartamento`)
REFERENCES `UC`.`Departamento` (`idDepartamento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`TipoUsuario`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`TipoUsuario` (
`idTipoUsuario` INT NOT NULL AUTO_INCREMENT,
`nom_tipo` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idTipoUsuario`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Area`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Area` (
`idArea` INT NOT NULL AUTO_INCREMENT,
`nombreArea` VARCHAR(45) NULL,
PRIMARY KEY (`idArea`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Usuario`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Usuario` (
`idUsuario` INT NOT NULL AUTO_INCREMENT,
`nom_usuario` VARCHAR(45) NOT NULL,
`password` VARCHAR(45) NOT NULL,
`fkTipoUsuario` INT NOT NULL,
`fkArea` INT NOT NULL,
PRIMARY KEY (`idUsuario`),
INDEX `fk_Usuario_TipoUsuario1_idx` (`fkTipoUsuario` ASC),
INDEX `fk_Usuario_Area1_idx` (`fkArea` ASC),
CONSTRAINT `fk_Usuario_TipoUsuario1`
FOREIGN KEY (`fkTipoUsuario`)
REFERENCES `UC`.`TipoUsuario` (`idTipoUsuario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Usuario_Area1`
FOREIGN KEY (`fkArea`)
REFERENCES `UC`.`Area` (`idArea`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Proveedor`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Proveedor` (
`idProveedor` INT NOT NULL,
`nom_prov` VARCHAR(45) NULL,
`rfc` VARCHAR(45) NULL,
`razon_social` VARCHAR(45) NULL,
`fec_alta` DATE NULL,
`nom_contacto` VARCHAR(45) NULL,
`telefono` VARCHAR(45) NULL,
`banco` VARCHAR(45) NULL,
`clave` VARCHAR(45) NULL,
PRIMARY KEY (`idProveedor`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Archivo`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Archivo` (
`idArchivo` INT NOT NULL,
`nom_archivo` VARCHAR(45) NULL,
PRIMARY KEY (`idArchivo`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Cotizacion`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Cotizacion` (
`idCotizacion` INT NOT NULL,
`fec_pago` DATE NULL,
`fec_alta` DATE NULL,
`cantidad` INT NULL,
`fkProveedor` INT NOT NULL,
`fkArchivo` INT NOT NULL,
PRIMARY KEY (`idCotizacion`),
INDEX `fk_Cotizacion_Proveedor1_idx` (`fkProveedor` ASC),
INDEX `fk_Cotizacion_Archivo1_idx` (`fkArchivo` ASC),
CONSTRAINT `fk_Cotizacion_Proveedor1`
FOREIGN KEY (`fkProveedor`)
REFERENCES `UC`.`Proveedor` (`idProveedor`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Cotizacion_Archivo1`
FOREIGN KEY (`fkArchivo`)
REFERENCES `UC`.`Archivo` (`idArchivo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Requisicion`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Requisicion` (
`idRequisicion` INT NOT NULL,
`nom_prod` VARCHAR(45) NOT NULL,
`descripcion` VARCHAR(45) NULL,
`info` VARCHAR(45) NULL,
`fkDepartamento` INT NOT NULL,
`fkUsuarioResponsable` INT NOT NULL,
`fecha` DATE NULL,
`fkCotizacionAprobada` INT NOT NULL,
PRIMARY KEY (`idRequisicion`),
INDEX `fk_Requisicion_Departamento1_idx` (`fkDepartamento` ASC),
INDEX `fk_Requisicion_Usuario1_idx` (`fkUsuarioResponsable` ASC),
INDEX `fk_Requisicion_Cotizacion1_idx` (`fkCotizacionAprobada` ASC),
CONSTRAINT `fk_Requisicion_Departamento1`
FOREIGN KEY (`fkDepartamento`)
REFERENCES `UC`.`Departamento` (`idDepartamento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Requisicion_Usuario1`
FOREIGN KEY (`fkUsuarioResponsable`)
REFERENCES `UC`.`Usuario` (`idUsuario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Requisicion_Cotizacion1`
FOREIGN KEY (`fkCotizacionAprobada`)
REFERENCES `UC`.`Cotizacion` (`idCotizacion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Requisicion_has_Cotizacion`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Requisicion_has_Cotizacion` (
`Requisicion_idRequisicion` INT NOT NULL,
`Cotizacion_idCotizacion` INT NOT NULL,
PRIMARY KEY (`Requisicion_idRequisicion`, `Cotizacion_idCotizacion`),
INDEX `fk_Requisicion_has_Cotizacion_Cotizacion1_idx` (`Cotizacion_idCotizacion` ASC),
INDEX `fk_Requisicion_has_Cotizacion_Requisicion1_idx` (`Requisicion_idRequisicion` ASC),
CONSTRAINT `fk_Requisicion_has_Cotizacion_Requisicion1`
FOREIGN KEY (`Requisicion_idRequisicion`)
REFERENCES `UC`.`Requisicion` (`idRequisicion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Requisicion_has_Cotizacion_Cotizacion1`
FOREIGN KEY (`Cotizacion_idCotizacion`)
REFERENCES `UC`.`Cotizacion` (`idCotizacion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `UC`.`CategoriaGasto`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`CategoriaGasto` (
`idCategoriaGasto` INT NOT NULL,
`nom_categoriagasto` VARCHAR(45) NULL,
PRIMARY KEY (`idCategoriaGasto`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Gastos`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Gastos` (
`idGastos` INT NOT NULL,
`nom_gasto` VARCHAR(45) NULL,
`total` DOUBLE NULL,
`info` VARCHAR(45) NULL,
`fec_alta` DATE NULL,
`fkUsuarioResponsable` INT NOT NULL,
`fkTipoGasto` INT NOT NULL,
PRIMARY KEY (`idGastos`),
INDEX `fk_Gastos_Usuario1_idx` (`fkUsuarioResponsable` ASC),
INDEX `fk_Gastos_CategoriaGasto1_idx` (`fkTipoGasto` ASC),
CONSTRAINT `fk_Gastos_Usuario1`
FOREIGN KEY (`fkUsuarioResponsable`)
REFERENCES `UC`.`Usuario` (`idUsuario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Gastos_CategoriaGasto1`
FOREIGN KEY (`fkTipoGasto`)
REFERENCES `UC`.`CategoriaGasto` (`idCategoriaGasto`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`CategoriaIngreso`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`CategoriaIngreso` (
`idCategoriaIngreso` INT NOT NULL,
`nombre_categoriaingreso` VARCHAR(45) NULL,
PRIMARY KEY (`idCategoriaIngreso`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Ingresos`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Ingresos` (
`idIngresos` INT NOT NULL,
`fkDepartamento` INT NOT NULL,
`fkUsuarioResponsable` INT NOT NULL,
`fkCategoriaIngreso` INT NOT NULL,
`reunion` VARCHAR(45) NULL,
PRIMARY KEY (`idIngresos`),
INDEX `fk_Ingresos_Departamento1_idx` (`fkDepartamento` ASC),
INDEX `fk_Ingresos_Usuario1_idx` (`fkUsuarioResponsable` ASC),
INDEX `fk_Ingresos_CategoriaIngreso1_idx` (`fkCategoriaIngreso` ASC),
CONSTRAINT `fk_Ingresos_Departamento1`
FOREIGN KEY (`fkDepartamento`)
REFERENCES `UC`.`Departamento` (`idDepartamento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Ingresos_Usuario1`
FOREIGN KEY (`fkUsuarioResponsable`)
REFERENCES `UC`.`Usuario` (`idUsuario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Ingresos_CategoriaIngreso1`
FOREIGN KEY (`fkCategoriaIngreso`)
REFERENCES `UC`.`CategoriaIngreso` (`idCategoriaIngreso`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Evento`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Evento` (
`idEvento` INT NOT NULL,
`nom_evento` VARCHAR(45) NULL,
`fec_evento` VARCHAR(45) NULL,
`fkUsuario` INT NOT NULL,
PRIMARY KEY (`idEvento`),
INDEX `fk_Evento_Usuario1_idx` (`fkUsuario` ASC),
CONSTRAINT `fk_Evento_Usuario1`
FOREIGN KEY (`fkUsuario`)
REFERENCES `UC`.`Usuario` (`idUsuario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Tutor`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Tutor` (
`idTutor` INT NOT NULL AUTO_INCREMENT,
`fkPersona` INT NOT NULL,
PRIMARY KEY (`idTutor`),
INDEX `fk_Tutor_Persona1_idx` (`fkPersona` ASC),
CONSTRAINT `fk_Tutor_Persona1`
FOREIGN KEY (`fkPersona`)
REFERENCES `UC`.`Persona` (`idPersona`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Niño`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Niño` (
`id_Niño` INT NOT NULL AUTO_INCREMENT,
`alergias` VARCHAR(45) NULL,
`extras` VARCHAR(45) NULL,
`fkPersona` INT NOT NULL,
`fkTutor` INT NOT NULL,
PRIMARY KEY (`id_Niño`),
INDEX `fk_Niño_Persona1_idx` (`fkPersona` ASC),
INDEX `fk_Niño_Tutor1_idx` (`fkTutor` ASC),
CONSTRAINT `fk_Niño_Persona1`
FOREIGN KEY (`fkPersona`)
REFERENCES `UC`.`Persona` (`idPersona`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Niño_Tutor1`
FOREIGN KEY (`fkTutor`)
REFERENCES `UC`.`Tutor` (`idTutor`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`totales`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`totales` (
`idtotales` INT NOT NULL,
`fecha` VARCHAR(45) NULL,
`no_niños` VARCHAR(45) NULL,
`ofrenda` VARCHAR(45) NULL,
`gasto` VARCHAR(45) NULL,
`diferencia` VARCHAR(45) NULL,
PRIMARY KEY (`idtotales`))
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Grupo`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Grupo` (
`idGrupo` INT NOT NULL AUTO_INCREMENT,
`nom_grupo` VARCHAR(45) NOT NULL,
`descripcion` VARCHAR(45) NULL,
`totales_idtotales` INT NOT NULL,
PRIMARY KEY (`idGrupo`),
INDEX `fk_Grupo_totales1_idx` (`totales_idtotales` ASC),
CONSTRAINT `fk_Grupo_totales1`
FOREIGN KEY (`totales_idtotales`)
REFERENCES `UC`.`totales` (`idtotales`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Activo`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Activo` (
`idActivo` INT NOT NULL AUTO_INCREMENT,
`clave` VARCHAR(45) NOT NULL,
`recoge` VARCHAR(45) NOT NULL,
`fkNiño` INT NOT NULL,
`fkGrupo` INT NOT NULL,
`fecha` DATE NOT NULL,
`Cuidado` INT NULL,
PRIMARY KEY (`idActivo`),
INDEX `fk_Activo_Niño1_idx` (`fkNiño` ASC),
INDEX `fk_Activo_Grupo1_idx` (`fkGrupo` ASC),
CONSTRAINT `fk_Activo_Niño1`
FOREIGN KEY (`fkNiño`)
REFERENCES `UC`.`Niño` (`id_Niño`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Activo_Grupo1`
FOREIGN KEY (`fkGrupo`)
REFERENCES `UC`.`Grupo` (`idGrupo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Entrega`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Entrega` (
`idEntrega` INT NOT NULL AUTO_INCREMENT,
`fec_entrega` DATE NOT NULL,
`fkActivo` INT NOT NULL,
`fkNiño` INT NOT NULL,
`fkUsuario` INT NOT NULL,
PRIMARY KEY (`idEntrega`),
INDEX `fk_Entrega_Activo1_idx` (`fkActivo` ASC),
INDEX `fk_Entrega_Niño1_idx` (`fkNiño` ASC),
INDEX `fk_Entrega_Usuario1_idx` (`fkUsuario` ASC),
CONSTRAINT `fk_Entrega_Activo1`
FOREIGN KEY (`fkActivo`)
REFERENCES `UC`.`Activo` (`idActivo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Entrega_Niño1`
FOREIGN KEY (`fkNiño`)
REFERENCES `UC`.`Niño` (`id_Niño`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Entrega_Usuario1`
FOREIGN KEY (`fkUsuario`)
REFERENCES `UC`.`Usuario` (`idUsuario`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Asistente`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Asistente` (
`idAsistente` INT NOT NULL AUTO_INCREMENT,
`iglesia` VARCHAR(45) NULL,
`fkPersona` INT NOT NULL,
`area` VARCHAR(45) NULL,
PRIMARY KEY (`idAsistente`),
INDEX `fk_Asistente_Persona1_idx` (`fkPersona` ASC),
CONSTRAINT `fk_Asistente_Persona1`
FOREIGN KEY (`fkPersona`)
REFERENCES `UC`.`Persona` (`idPersona`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Taller`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Taller` (
`idTaller` INT NOT NULL AUTO_INCREMENT,
`nom_taller` VARCHAR(45) NULL,
`fkEvento` INT NOT NULL,
PRIMARY KEY (`idTaller`),
INDEX `fk_Taller_Evento1_idx` (`fkEvento` ASC),
CONSTRAINT `fk_Taller_Evento1`
FOREIGN KEY (`fkEvento`)
REFERENCES `UC`.`Evento` (`idEvento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`ReqAprobadas`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`ReqAprobadas` (
`idReqAprobadas` INT NOT NULL,
`fkRequisicion` INT NOT NULL,
`fkCotizacionAprobada` INT NOT NULL,
PRIMARY KEY (`idReqAprobadas`),
INDEX `fk_ReqAprobadas_Requisicion1_idx` (`fkRequisicion` ASC),
INDEX `fk_ReqAprobadas_Cotizacion1_idx` (`fkCotizacionAprobada` ASC),
CONSTRAINT `fk_ReqAprobadas_Requisicion1`
FOREIGN KEY (`fkRequisicion`)
REFERENCES `UC`.`Requisicion` (`idRequisicion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_ReqAprobadas_Cotizacion1`
FOREIGN KEY (`fkCotizacionAprobada`)
REFERENCES `UC`.`Cotizacion` (`idCotizacion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Codigo`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Codigo` (
`codigo` INT NOT NULL,
`status` INT NULL,
`fkEvento` INT NOT NULL,
PRIMARY KEY (`codigo`),
INDEX `fk_Codigo_Evento1_idx` (`fkEvento` ASC),
CONSTRAINT `fk_Codigo_Evento1`
FOREIGN KEY (`fkEvento`)
REFERENCES `UC`.`Evento` (`idEvento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Asistente_has_Evento`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`Asistente_has_Evento` (
`fkAsistente` INT NOT NULL,
`fkEvento` INT NOT NULL,
`codigo` INT NOT NULL,
PRIMARY KEY (`fkAsistente`, `fkEvento`),
INDEX `fk_Asistente_has_Evento_Evento1_idx` (`fkEvento` ASC),
INDEX `fk_Asistente_has_Evento_Asistente1_idx` (`fkAsistente` ASC),
INDEX `fk_Asistente_has_Evento_Codigo1_idx` (`codigo` ASC),
CONSTRAINT `fk_Asistente_has_Evento_Asistente1`
FOREIGN KEY (`fkAsistente`)
REFERENCES `UC`.`Asistente` (`idAsistente`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Asistente_has_Evento_Evento1`
FOREIGN KEY (`fkEvento`)
REFERENCES `UC`.`Evento` (`idEvento`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Asistente_has_Evento_Codigo1`
FOREIGN KEY (`codigo`)
REFERENCES `UC`.`Codigo` (`codigo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`ActivoCongreso`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `UC`.`ActivoCongreso` (
`idActivoCongreso` INT NOT NULL,
`id_asistente` INT NOT NULL,
`pulsera` VARCHAR(45) NULL,
PRIMARY KEY (`idActivoCongreso`),
INDEX `fk_ActivoCongreso_Asistente_has_Evento1_idx` (`id_asistente` ASC),
CONSTRAINT `fk_ActivoCongreso_Asistente_has_Evento1`
FOREIGN KEY (`id_asistente`)
REFERENCES `UC`.`Asistente_has_Evento` (`fkAsistente`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `UC`.`Taller_has_ActivoCongreso`
-- ---------------------------------------------------
CREATE TABLE IF NOT EXISTS `UC`.`Taller_has_ActivoCongreso` (
`fkTaller` INT NOT NULL,
`fkActivoCongreso` INT NOT NULL,
PRIMARY KEY (`fkTaller`, `fkActivoCongreso`),
INDEX `fk_Taller_has_ActivoCongreso_ActivoCongreso1_idx` (`fkActivoCongreso` ASC),
INDEX `fk_Taller_has_ActivoCongreso_Taller1_idx` (`fkTaller` ASC),
CONSTRAINT `fk_Taller_has_ActivoCongreso_Taller1`
FOREIGN KEY (`fkTaller`)
REFERENCES `UC`.`Taller` (`idTaller`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Taller_has_ActivoCongreso_ActivoCongreso1`
FOREIGN KEY (`fkActivoCongreso`)
REFERENCES `UC`.`ActivoCongreso` (`idActivoCongreso`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
XIV. Bibliografía
Desconocido. (25-05-2007). Por qué utilizar bases de datos. 22-06-2015, de
PBWORK Sitio web:
http://docupo.pbworks.com/w/page/18009120/porque%utilizar%bases%de%datos
Eduardo Rivera Salinas. (10-06-2014). Introducción Base de Datos. 22-06-2015,
de CCM Sitio web:
http://es.ccm.net/contents/66-introduccion-bases-de-datos
MySQL. (1/04/2014). MySQL Workbench. 24/06/2015, de MySQL Sitio web:
https://www.mysql.com/products/workbench/
Margaret Rouse. (10/01/2015). MySQL. 24/06/2015, de SearchDataCenter Sitio
web:
http://searchdatacenter.techtarget.com/es/definicion/MySQL
PhpMyAdmin.
(2012).
Documentación
phpMyAdmin.
06/07/2015,
de
The
phpMyAdmin devel team. Sitio web:
https://phpmyadmin-spanish.readthedocs.org/es/latest/credits.html
Steffen Macke - Betrieb von Webseiten. (1997). Dia Diagram Editor. 27/072015, de
Sitio web:
http://dia-installer.de/index.html.es
Descargar