diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb17087 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +informe/*.aux +informe/*.log +informe/*.out +informe/*.toc +informe/*.gz diff --git a/README.md b/README.md index b30eaa8..4ae5c16 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Olímpicos -Eso es el proyecto semestral de administración de base de datos. El enunciado se encuentra en el archivo "Trabajo_Semestral.pdf". El MR y MER se encuentran en "modelo/Modelo MR.pdf" y "modelo/Modelo MER.png". +Eso es el proyecto semestral de administración de base de datos. El enunciado se encuentra en el archivo "Trabajo_Semestral.pdf". El MR y MER se encuentran en "modelo/MR.pdf" y "modelo/MER.png". ## Integrantes diff --git a/data.sql b/data.sql index 56e5551..1c4c53a 100644 --- a/data.sql +++ b/data.sql @@ -2,20 +2,17 @@ INSERT INTO MEDALLA (DESCRIPCION) VALUES ('oro'); INSERT INTO MEDALLA (DESCRIPCION) VALUES ('plata '); INSERT INTO MEDALLA (DESCRIPCION) VALUES ('bronce'); - INSERT INTO CATEGORIA (DESCRIPCION) VALUES ('100 Metros'); INSERT INTO CATEGORIA (DESCRIPCION) VALUES ('20 Metros'); INSERT INTO CATEGORIA (DESCRIPCION) VALUES ('30 Metros'); INSERT INTO CATEGORIA (DESCRIPCION) VALUES ('40 Metros'); - INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Ignacio', 'Ortiz', TO_DATE('1998-04-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Chilena'); INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Chris', 'Cromer', TO_DATE('1998-05-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Chilena'); INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Benjamin', 'Perez', TO_DATE('1992-01-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Argentina'); INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Diego', 'Perez', TO_DATE('1983-12-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Peruana'); INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Kevin', 'Perez', TO_DATE('1983-12-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Peruana'); - INSERT INTO PAIS (NOMBRE) VALUES ('Chile'); INSERT INTO PAIS (NOMBRE) VALUES ('Peru'); INSERT INTO PAIS (NOMBRE) VALUES ('Argentina'); @@ -24,7 +21,6 @@ INSERT INTO PAIS (NOMBRE) VALUES ('Berlin'); INSERT INTO PAIS (NOMBRE) VALUES ('Canada'); INSERT INTO PAIS (NOMBRE) VALUES ('Republica Checa'); - INSERT INTO TIPOS_DEPORTES (DESCRIPCION) VALUES ('Atletismo'); INSERT INTO TIPOS_DEPORTES (DESCRIPCION) VALUES ('Carrera'); INSERT INTO TIPOS_DEPORTES (DESCRIPCION) VALUES ('Arqueria'); @@ -36,7 +32,6 @@ INSERT INTO TIPOS_DEPORTES (DESCRIPCION) VALUES ('Curling'); INSERT INTO TIPOS_DEPORTES (DESCRIPCION) VALUES ('Rugby'); INSERT INTO TIPOS_DEPORTES (DESCRIPCION) VALUES ('Disparo'); - INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Tome', 1); INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Concepcion', 1); INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Checa', 2); @@ -48,7 +43,6 @@ INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Iquique', 6); INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Orzan', 4); INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Riazor', 3); - INSERT INTO LUGAR (NOMBRE, CAPACIDAD, CIUDAD) VALUES ('BXKQ', 100, 1); INSERT INTO LUGAR (NOMBRE, CAPACIDAD, CIUDAD) VALUES ('TELLONES', 120, 2); INSERT INTO LUGAR (NOMBRE, CAPACIDAD, CIUDAD) VALUES ('TRELLIG', 80, 3); @@ -56,7 +50,6 @@ INSERT INTO LUGAR (NOMBRE, CAPACIDAD, CIUDAD) VALUES ('DIRAKZ', 250, 3); INSERT INTO LUGAR (NOMBRE, CAPACIDAD, CIUDAD) VALUES ('ZERINID', 400, 5); INSERT INTO LUGAR (NOMBRE, CAPACIDAD, CIUDAD) VALUES ('CHIX', 150, 6); - INSERT INTO HOTEL (NOMBRE, CIUDAD) VALUES ('SILENT', 1); INSERT INTO HOTEL (NOMBRE, CIUDAD) VALUES ('ZRKAZ', 2); INSERT INTO HOTEL (NOMBRE, CIUDAD) VALUES ('JBL', 3); @@ -66,7 +59,6 @@ INSERT INTO HOTEL (NOMBRE, CIUDAD) VALUES ('HILL', 5); INSERT INTO HOTEL (NOMBRE, CIUDAD) VALUES ('RESIDENT', 6); INSERT INTO HOTEL (NOMBRE, CIUDAD) VALUES ('ZERO', 1); - INSERT INTO CAPITAL (ID_PAIS, ID_CIUDAD) VALUES (1, 1); INSERT INTO CAPITAL (ID_PAIS, ID_CIUDAD) VALUES (1, 2); INSERT INTO CAPITAL (ID_PAIS, ID_CIUDAD) VALUES (2, 3); @@ -77,13 +69,11 @@ INSERT INTO CAPITAL (ID_PAIS, ID_CIUDAD) VALUES (4, 7); INSERT INTO CAPITAL (ID_PAIS, ID_CIUDAD) VALUES (5, 8); INSERT INTO CAPITAL (ID_PAIS, ID_CIUDAD) VALUES (6, 9); - INSERT INTO DELEGACION (NOMBRE, CANTIDAD_ATLETAS, PAIS, ATLETA) VALUES ('SAMSU', 2, 1, 1); INSERT INTO DELEGACION (NOMBRE, CANTIDAD_ATLETAS, PAIS, ATLETA) VALUES ('SUX', 3, 2, 2); INSERT INTO DELEGACION (NOMBRE, CANTIDAD_ATLETAS, PAIS, ATLETA) VALUES ('SKT1', 4, 3, 3); INSERT INTO DELEGACION (NOMBRE, CANTIDAD_ATLETAS, PAIS, ATLETA) VALUES ('SUPREME', 2, 4, 4); - INSERT INTO COMPETENCIA (NOMBRE, CATEGORIA, TIPO, LUGAR) VALUES ('Atletismo', 1, 1, 1); INSERT INTO COMPETENCIA (NOMBRE, CATEGORIA, TIPO, LUGAR) VALUES ('Atletismo', 1, 1, 2); INSERT INTO COMPETENCIA (NOMBRE, CATEGORIA, TIPO, LUGAR) VALUES ('Atletismo', 1, 1, 3); @@ -98,7 +88,6 @@ INSERT INTO COMPETENCIA (NOMBRE, CATEGORIA, TIPO, LUGAR) VALUES ('Carrera', 4, 1 INSERT INTO COMPETENCIA (NOMBRE, CATEGORIA, TIPO, LUGAR) VALUES ('Carrera', 4, 2, 3); INSERT INTO COMPETENCIA (NOMBRE, CATEGORIA, TIPO, LUGAR) VALUES ('Carrera', 4, 3, 5); - INSERT INTO PRECOMPETENCIA (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-06-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 1, 1); INSERT INTO PRECOMPETENCIA (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-06-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 1, 2); INSERT INTO PRECOMPETENCIA (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-07-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 1, 3); @@ -108,7 +97,6 @@ INSERT INTO PRECOMPETENCIA (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-08- INSERT INTO PRECOMPETENCIA (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-09-26 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 3, 1); INSERT INTO PRECOMPETENCIA (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-10-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 4, 2); - INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (1, 1, TO_DATE('2020-05-21 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 1500000, 1500000); INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (1, 2, TO_DATE('2020-05-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-06-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 350000, 350000); INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (2, 3, TO_DATE('2020-05-08 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-05-10 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 280000, 280000); @@ -116,14 +104,12 @@ INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_D INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (4, 2, TO_DATE('2020-09-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-10-15 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 178000, 178000); INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (5, 3, TO_DATE('2020-10-13 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-10-18 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 189000, 189000); - INSERT INTO GANAR (ID_ATLETA, ID_COMPETENCIA, ID_MEDALLA, FECHA, PUNTAJE) VALUES (1, 1, 3, TO_DATE('2019-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 70); INSERT INTO GANAR (ID_ATLETA, ID_COMPETENCIA, ID_MEDALLA, FECHA, PUNTAJE) VALUES (1, 1, 1, TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 99); INSERT INTO GANAR (ID_ATLETA, ID_COMPETENCIA, ID_MEDALLA, FECHA, PUNTAJE) VALUES (2, 2, 1, TO_DATE('2019-06-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 100); INSERT INTO GANAR (ID_ATLETA, ID_COMPETENCIA, ID_MEDALLA, FECHA, PUNTAJE) VALUES (3, 1, 2, TO_DATE('2019-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 78); INSERT INTO GANAR (ID_ATLETA, ID_COMPETENCIA, ID_MEDALLA, FECHA, PUNTAJE) VALUES (3, 1, 3, TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 89); - INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES (1, 1, 70, TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES (1, 2, 75, TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES (1, 3, 80, TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); @@ -131,7 +117,6 @@ INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FE INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES (3, 2, 100, TO_DATE('2020-06-27 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES (1, 4, 20, TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); - INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 1, TO_DATE('2020-06-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 2, TO_DATE('2020-06-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 3, TO_DATE('2020-06-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS')); diff --git a/informe/informe.pdf b/informe/informe.pdf new file mode 100644 index 0000000..5a97a6b Binary files /dev/null and b/informe/informe.pdf differ diff --git a/informe/informe.tex b/informe/informe.tex new file mode 100644 index 0000000..85edeb8 --- /dev/null +++ b/informe/informe.tex @@ -0,0 +1,190 @@ +\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) +} + +\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} + diff --git a/informe/ubblogo.png b/informe/ubblogo.png new file mode 100644 index 0000000..76f7dcc Binary files /dev/null and b/informe/ubblogo.png differ diff --git a/modelo/Modelo MER.png b/modelo/MER.png similarity index 100% rename from modelo/Modelo MER.png rename to modelo/MER.png diff --git a/modelo/Modelo MR.pdf b/modelo/MR.pdf similarity index 100% rename from modelo/Modelo MR.pdf rename to modelo/MR.pdf diff --git a/schema.sql b/schema.sql index 0792265..4980f28 100644 --- a/schema.sql +++ b/schema.sql @@ -4,14 +4,12 @@ CREATE TABLE MEDALLA( CONSTRAINT MEDALLA_PK PRIMARY KEY (ID_MEDALLA) ); - CREATE TABLE CATEGORIA( ID_CATEGORIA NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), DESCRIPCION VARCHAR(50), CONSTRAINT CATEGORIA_PK PRIMARY KEY (ID_CATEGORIA) ); - CREATE TABLE ATLETA ( ID_ATLETA NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), NOMBRE VARCHAR2(50), @@ -21,21 +19,18 @@ CREATE TABLE ATLETA ( CONSTRAINT ATLETA_PK PRIMARY KEY (ID_ATLETA) ); - CREATE TABLE PAIS( ID_PAIS NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), NOMBRE VARCHAR(50), CONSTRAINT PAIS_PK PRIMARY KEY (ID_PAIS) ); - CREATE TABLE TIPOS_DEPORTES( ID_TIPO NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), DESCRIPCION VARCHAR(50), CONSTRAINT TIPO_PK PRIMARY KEY (ID_TIPO) ); - CREATE TABLE CIUDAD ( ID_CIUDAD NUMBER, NOMBRE VARCHAR(50), @@ -44,7 +39,6 @@ CREATE TABLE CIUDAD ( CONSTRAINT CIUDAD_PAIS_FK FOREIGN KEY (PAIS) REFERENCES PAIS(ID_PAIS) ); - CREATE TABLE LUGAR ( ID_LUGAR NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), NOMBRE VARCHAR2(50), @@ -54,7 +48,6 @@ CREATE TABLE LUGAR ( CONSTRAINT LUGAR_CIUDAD_FK FOREIGN KEY (CIUDAD) REFERENCES CIUDAD(ID_CIUDAD) ); - CREATE TABLE HOTEL( ID_HOTEL NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), NOMBRE VARCHAR2(50), @@ -63,7 +56,6 @@ CREATE TABLE HOTEL( CONSTRAINT HOTEL_CIUDAD_FK FOREIGN KEY (CIUDAD) REFERENCES CIUDAD(ID_CIUDAD) ); - CREATE TABLE CAPITAL( ID_PAIS NUMBER, ID_CIUDAD NUMBER, @@ -72,7 +64,6 @@ CREATE TABLE CAPITAL( CONSTRAINT CAPITAL_CIUDAD_FK FOREIGN KEY (ID_CIUDAD) REFERENCES CIUDAD(ID_CIUDAD) ); - CREATE TABLE DELEGACION( ID_DELEGACION NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), NOMBRE VARCHAR2(50), @@ -84,7 +75,6 @@ CREATE TABLE DELEGACION( CONSTRAINT DELEGACION_ATLETA_FK FOREIGN KEY (ATLETA) REFERENCES ATLETA(ID_ATLETA) ); - CREATE TABLE COMPETENCIA( ID_COMPETENCIA NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), NOMBRE VARCHAR2(50), @@ -97,7 +87,6 @@ CREATE TABLE COMPETENCIA( CONSTRAINT COMPETENCIA_LUGAR_FK FOREIGN KEY (LUGAR) REFERENCES LUGAR(ID_LUGAR) ); - CREATE TABLE PRECOMPETENCIA( ID_PRECOMPETENCIA NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), FECHA DATE, @@ -108,7 +97,6 @@ CREATE TABLE PRECOMPETENCIA( CONSTRAINT PRECOMPETENCIA_LUGAR_FK FOREIGN KEY (LUGAR) REFERENCES LUGAR(ID_LUGAR) ); - CREATE TABLE HOSPEDAR( ID_HOTEL NUMBER, ID_DELEGACION NUMBER, @@ -121,7 +109,6 @@ CREATE TABLE HOSPEDAR( CONSTRAINT HOSPEDAR_DELEGACION_FK FOREIGN KEY (ID_DELEGACION) REFERENCES DELEGACION(ID_DELEGACION) ); - CREATE TABLE GANAR( ID_ATLETA NUMBER, ID_COMPETENCIA NUMBER, @@ -134,7 +121,6 @@ CREATE TABLE GANAR( CONSTRAINT GANAR_MEDALLA_FK FOREIGN KEY (ID_MEDALLA) REFERENCES MEDALLA(ID_MEDALLA) ); - CREATE TABLE PARTICIPAR_COMPETENCIA( ID_COMPETENCIA NUMBER, ID_ATLETA NUMBER, @@ -144,7 +130,6 @@ CREATE TABLE PARTICIPAR_COMPETENCIA( CONSTRAINT PARTICIPAR_COMPETENCIA_ATLETA_FK FOREIGN KEY (ID_ATLETA) REFERENCES ATLETA(ID_ATLETA) ); - CREATE TABLE PARTICIPAR_PRECOMPETENCIA( ID_PRECOMPETENCIA NUMBER, ID_ATLETA NUMBER, diff --git a/trigger.sql b/trigger.sql index e9195b1..3771981 100644 --- a/trigger.sql +++ b/trigger.sql @@ -83,3 +83,4 @@ BEGIN :NEW.PRECIO_DELEGACION := v_atletas * :NEW.PRECIO_ATLETA; END IF; END; +/ diff --git a/vista.sql b/vista.sql index 9a8774e..d706674 100644 --- a/vista.sql +++ b/vista.sql @@ -1,4 +1,3 @@ --- Parte 1 Crear una vista que trae la cantidad maxima de atletas asociados a un pais que compitan en Atletismo CREATE OR REPLACE VIEW MAX_ATLETA_ATLETISMO_PAIS AS SELECT P.ID_PAIS, P.NOMBRE, COUNT(*) AS CANTIDAD_ATLETA FROM COMPETENCIA C @@ -7,4 +6,4 @@ CREATE OR REPLACE VIEW MAX_ATLETA_ATLETISMO_PAIS AS INNER JOIN DELEGACION D ON (D.ATLETA = A.ID_ATLETA) INNER JOIN PAIS P ON (P.ID_PAIS = D.PAIS) WHERE TIPO = (SELECT TD.ID_TIPO FROM TIPOS_DEPORTES TD WHERE (UPPER(TD.DESCRIPCION) = 'ATLETISMO')) - GROUP BY (P.ID_PAIS, P.NOMBRE); \ No newline at end of file + GROUP BY (P.ID_PAIS, P.NOMBRE);