197 lines
5.9 KiB
TeX
197 lines
5.9 KiB
TeX
\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}
|
|
|
|
\title{\textbf{Trabajo Semestral de Administración y Programación de Base de Datos\\Entrega 1}}
|
|
\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}
|
|
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
|
|
conforme con las reglas de los triggers. La sección de \nameref{sec:consultas} tiene las consultas 1 y 2. Y finalmente las\
|
|
\nameref{sec:pruebas} ayudan en demostrar que los triggers funcionan sin problema.
|
|
|
|
Para facilitar el uso del código SQL, se puede encontrar los archivos .sql en el repositorio de git ubicado en\
|
|
\href{https://github.com/cromerc/olimpicos}{https://github.com/cromerc/olimpicos}.
|
|
|
|
|
|
\newpage
|
|
\section{Modelo}
|
|
\label{sec:modelo}
|
|
\subsection{Modelo Relacional}
|
|
\label{sec:mr}
|
|
\begin{center}
|
|
En \textbf{negrita} se presentan las claves foráneas y las primarias en \underline{subrayado}.\smallskip
|
|
\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
|
|
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}})
|
|
}
|
|
|
|
\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}
|
|
La siguiente vista es parte de consulta 2 en \nameref{sec:consultas}.\
|
|
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.\
|
|
Eso garantiza que nuestros datos cumple con las reglas de los trigger.\\
|
|
\lstinputlisting{../trigger.sql}
|
|
|
|
\newpage
|
|
\subsection{Datos}
|
|
\label{sec:datos}
|
|
Los datos que usamos para poblar el base de datos nos facilita en consulta 1 a 2 y trigger 3 a 5.
|
|
\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}
|
|
|