2020-06-27 22:59:26 -04:00
\documentclass [12pt] { article}
\usepackage [utf8] { inputenc}
\usepackage [spanish] { babel}
\usepackage { array}
\usepackage { adjustbox}
\usepackage [left=2cm,right=2cm,top=2cm,bottom=2cm,a4paper] { geometry}
\usepackage { amsmath}
\usepackage { verbatim}
\usepackage { courier}
\usepackage { listings}
\usepackage { xcolor}
\lstdefinestyle { freefempp} {
language=SQL,
basicstyle=\scriptsize \ttfamily ,
commentstyle=\itshape \color { gray} ,
keywordstyle=\color { blue} ,
numberstyle=\color { red} ,
stringstyle=\color { red} ,
identifierstyle=\color { violet} ,
showstringspaces=false,
%float,
%frame=single,
%numbers=left
}
\lstset {
basicstyle=\footnotesize \ttfamily ,
columns=flexible,
breaklines=true,
inputencoding=utf8,
extendedchars=true,
literate={ á} { { \' a} } 1 { é} { { \' e} } 1 { í} { { \' i} } 1 { ó} { { \' o} } 1 { ú} { { \' u} } 1 { ñ} { { \~ n} } 1 { Á} { { \' A} } 1 { É} { { \' E} } 1 { Í} { { \' I} } 1 { Ó} { { \' O} } 1 { Ú} { { \' U} } 1 { Ñ} { { \~ N} } 1,
style=freefempp
}
\usepackage { titling}
\renewcommand \maketitlehooka { \null \mbox { } \vfill }
\renewcommand \maketitlehookd { \vfill \null }
\usepackage { hyperref}
\hypersetup { colorlinks=true,allcolors=blue}
\usepackage { hypcap}
2020-06-27 23:04:33 -04:00
\title { \textbf { Trabajo Semestral de Administración y Programación de Base de Datos\\ Entrega 1} }
2020-06-27 22:59:26 -04:00
\author { Christopher Cromer\\ Ignacio Ortiz\\ \\ Profesoras Tatiana Gutiérrez y Valeria Beratto\\ Ingeniería Civil Informática}
\date { \today }
\pretitle { %
\begin { center}
\LARGE
\includegraphics [width=4cm] { ubblogo.png} \\ [\bigskipamount]
}
\posttitle { \end { center} }
\begin { document}
\clearpage
\hypersetup { pageanchor=false}
\begin { titlingpage}
\maketitle
\end { titlingpage}
\thispagestyle { empty}
\newpage
\clearpage
\thispagestyle { empty}
\tableofcontents
\newpage
\hypersetup { pageanchor=true}
\pagenumbering { arabic}
\section { Introducción}
2020-06-28 18:08:44 -04:00
Para el proyecto semestral se pide desarrollar una base de datos para los juegos olímpicos.\
El proyecto está dividido en 2 grandes partes, el modelo y el SQL.\
Primero en el caso de el \nameref { sec:modelo} , tenemos el \nameref { sec:mr} que fue usado para construir nuestra base de datos.
En la sección de \nameref { sec:sql} tenemos la \nameref { sec:schema} , que tiene el esquema de la base de datos que hicimos basado en el\
modelo. Las \nameref { sec:vistas} , la única vista que tenemos es necesaria para el funcionamiento de consulta. Segundo,\
creamos los \nameref { sec:triggers} 3 a 5, según el enunciado, está elaborado antes que poblamos la base de datos, razón por la cual nuestros datos están
2020-06-27 22:59:26 -04:00
conforme con las reglas de los triggers. La sección de \nameref { sec:consultas} tiene las consultas 1 y 2. Y finalmente las\
2020-06-28 18:08:44 -04:00
\nameref { sec:pruebas} ayudan en demostrar que los triggers funcionan sin problema.
2020-06-27 22:59:26 -04:00
2020-06-28 18:08:44 -04:00
Para facilitar el uso del código SQL, se puede encontrar los archivos .sql en el repositorio de git ubicado en\
2020-06-28 17:24:02 -04:00
\href { https://github.com/cromerc/olimpicos} { https://github.com/cromerc/olimpicos} .
2020-06-27 22:59:26 -04:00
\newpage
\section { Modelo}
\label { sec:modelo}
\subsection { Modelo Relacional}
\label { sec:mr}
\begin { center}
2020-06-28 18:15:08 -04:00
En \textbf { negrita} se presentan las claves foráneas y las primarias en \underline { subrayado} .\smallskip
2020-06-27 22:59:26 -04:00
\end { center} \bigskip
{ \scriptsize
\noindent
MEDALLA (\underline { ID\_ MEDALLA} , DESCRIPCION)\bigskip
\noindent
CATEGORIA (\underline { ID\_ CATEGORIA} , DESCRIPCION)\bigskip
\noindent
ATLETA (\underline { ID\_ ATLETA} , NOMBRE, APELLIDO, FECHA\_ NACIMIENTO, NACIONALIDAD)\bigskip
\noindent
PAIS (\underline { ID\_ PAIS} , NOMBRE)\bigskip
\noindent
TIPOS\_ DEPORTES (\underline { ID\_ TIPO} , DESCRIPCION)\bigskip
\noindent
CIUDAD \underline { (ID\_ CIUDAD} , NOMBRE, \textbf { PAIS} )\bigskip
\noindent
LUGAR \underline { (ID\_ LUGAR} , NOMBRE, CAPACIDAD, \textbf { CIUDAD} )\bigskip
\noindent
HOTEL (\underline { ID\_ HOTEL} , NOMBRE, \textbf { CIUDAD} )\bigskip
\noindent
CAPITAL (\underline { \textbf { ID\_ PAIS} , \textbf { ID\_ CIUDAD} } )\bigskip
\noindent
DELEGACION (\underline { ID\_ DELEGACION} , NOMBRE, CANTIDAD\_ ATLETAS, \textbf { PAIS} , \textbf { ATLETA} )\bigskip
\noindent
COMPETENCIA (\underline { ID\_ COMPETENCIA} , NOMBRE, \textbf { CATEGORIA} , \textbf { TIPO} , \textbf { LUGAR} )\bigskip
\noindent
PRECOMPETENCIA (\underline { ID\_ PRECOMPETENCIA} , FECHA, \textbf { COMPETENCIA} , \textbf { LUGAR} )\bigskip
\noindent
HOSPEDAR (\underline { \textbf { ID\_ HOTEL} , \textbf { ID\_ DELEGACION} , FECHA\_ INICIO} , FECHA\_ FIN, PRECIO\_ DELEGACION, PRECIO\_ ATLETA)\bigskip
\noindent
GANAR (\underline { \textbf { ID\_ ATLETA} , \textbf { ID\_ COMPETENCIA} , FECHA} , \textbf { ID\_ MEDALLA} , PUNTAJE)\bigskip
\noindent
PARTICIPAR\_ COMPETENCIA (\underline { \textbf { ID\_ COMPETENCIA} , \textbf { ID\_ ATLETA} , FECHA} )\bigskip
\noindent
2020-07-16 16:47:24 -04:00
PARTICIPAR\_ PRECOMPETENCIA (\underline { \textbf { ID\_ PRECOMPETENCIA} , \textbf { ID\_ ATLETA} , FECHA} , PUNTAJE)\bigskip
\noindent
PERTENECER (\underline { \textbf { ID\_ DELEGACION} , \textbf { ID\_ PAIS} } )\bigskip
\noindent
COMPETER\_ POR (\underline { \textbf { ID\_ ATLETA} , \textbf { ID\_ DELEGACION} } )
2020-06-27 22:59:26 -04:00
}
\newpage
\section { SQL}
\label { sec:sql}
\subsection { Schema}
\label { sec:schema}
Eso es la esquema general de nuestro proyecto de base de datos.\\
\lstinputlisting { ../schema.sql}
\newpage
\subsection { Vistas}
\label { sec:vistas}
2020-06-28 15:55:53 -04:00
La siguiente vista es parte de consulta 2 en \nameref { sec:consultas} .\
2020-06-27 22:59:26 -04:00
Es necesario ser creado antes que se puede ejecutar la consulta.\\
\lstinputlisting { ../vista.sql}
\newpage
\subsection { Triggers}
\label { sec:triggers}
Creamos los triggers antes que insertamos los datos de prueba.\
2020-06-28 19:14:44 -04:00
Eso garantiza que nuestros datos cumple con las reglas de los trigger.\\
2020-06-27 22:59:26 -04:00
\lstinputlisting { ../trigger.sql}
\newpage
\subsection { Datos}
\label { sec:datos}
2020-06-28 19:14:44 -04:00
Los datos que usamos para poblar el base de datos nos facilita en consulta 1 a 2 y trigger 3 a 5.
2020-06-27 22:59:26 -04:00
\lstinputlisting { ../data.sql}
\newpage
\subsection { Consultas}
\label { sec:consultas}
Esos son las consultas 1 y 2. En el caso de consulta 2, depende de la vista creada anteriormente de\
la sección \nameref { sec:vistas} .
\lstinputlisting { ../consulta.sql}
\newpage
\subsection { Pruebas para los Trigger}
\label { sec:pruebas}
Las consultas siguientes se pueden ejecutar para probar la funcionamiento correcto de los triggers.\\
\lstinputlisting { ../trigger_ test.sql}
\end { document}