\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=\footnotesize\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, style=freefempp } \usepackage{titling} \renewcommand\maketitlehooka{\null\mbox{}\vfill} \renewcommand\maketitlehookd{\vfill\null} \usepackage{hyperref} \hypersetup{colorlinks=true,allcolors=black} \usepackage{hypcap} \title{\textbf{Proyecto Semestral de Base de Datos\\Entrega 1}} \author{Christopher Cromer\\\\Profesoras Mónica Caniupán 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} El objetivo de este trabajo es modelar un sistema para los colegios municipales de la región del Bío-Bío con el propósito de almacenar y consultar en una base de datos de PostgreSQL con información el colegio. \newpage \section{Modelo Entidad Relación} \begin{center} \includegraphics[angle=270,origin=c,width=0.90\textwidth,height=0.90\textheight,keepaspectratio]{MER.png} \end{center} \newpage \section{Modelo Relacional} \begin{center} En negrita se presentan las claves foráneas y las primarias en subrayado.\smallskip \end{center} region(\underline{id\_region}, nombre)\bigskip \noindent ciudad(\underline{id\_ciudad}, nombre, \textbf{id\_region})\bigskip \noindent apoderado(\underline{rut\_apoderado}, nombres, apellidos, direccion, \textbf{id\_ciudad})\bigskip \noindent alumno(\underline{rut\_alumno}, nombres, apellidos, direccion, \textbf{id\_ciudad}, anyo\_ingreso, fecha\_nacimiento, \textbf{rut\_apoderado})\bigskip \noindent profesor(\underline{rut\_profesor}, nombres, apellidos, direccion, \textbf{id\_ciudad})\bigskip \noindent actividad(\underline{id\_actividad}, nombre, cupos, lugar, \textbf{rut\_profesor})\bigskip \noindent nivel(\underline{id\_nivel}, nombre)\bigskip \noindent bloque(\underline{id\_bloque}, descripcion)\bigskip \noindent curso(\underline{id\_curso}, \textbf{rut\_profesor})\bigskip \noindent asignatura(\underline{id\_asignatura}, nombre, \textbf{rut\_profesor})\bigskip \noindent participar(\textbf{\underline{rut\_alumno}}, \textbf{\underline{id\_actividad}})\bigskip \noindent actividad\_nivel(\textbf{\underline{id\_actividad}}, \textbf{\underline{id\_nivel}})\bigskip \noindent actividad\_bloque(\textbf{\underline{id\_actividad}}, \textbf{\underline{id\_bloque}})\bigskip \noindent horario(\textbf{\underline{id\_asignatura}}, \textbf{\underline{id\_bloque}}, sala)\bigskip \noindent registro(\textbf{\underline{rut\_alumno}}, \textbf{\underline{id\_asignatura}}, nota)\bigskip \noindent cursar(\textbf{\underline{rut\_alumno}}, \textbf{\underline{id\_curso}})\bigskip \noindent asociado(\textbf{\underline{id\_curso}}, \textbf{\underline{id\_asignatura}})\bigskip \noindent asistente(\textbf{\underline{rut\_profesor}}, \textbf{\underline{id\_curso}})\bigskip \newpage \section{Justificación de Modelo Relacional} \textbf{\textit{region}} no adquiere ninguna clave foránea debido a que las relaciones entre las otras entidades son de \textbf{\textit{1 a n}}.\bigskip \textbf{\textit{ciudad}} adquiere la clave foránea \textbf{\textit{id\_region}} debido a que la relación entre las entidades \textbf{\textit{ciudad}} y \textbf{\textit{region}} es de \textbf{\textit{n a 1}}.\bigskip \textbf{\textit{apoderado}} adquiere la clave foránea \textbf{\textit{id\_ciudad}} debido a que la relación entre las entidades \textbf{\textit{apoderado}} y \textbf{\textit{ciudad}} es de \textbf{\textit{n a 1}}.\bigskip \textbf{\textit{alumno}} adquiere la clave foránea \textbf{\textit{id\_ciudad}} debido a que la relación entre las entidades \textbf{\textit{alumno}} y \textbf{\textit{ciudad}} es de \textbf{\textit{n a 1}}. También recibe la clave foránea \textbf{rut\_apoderado} debido a la relación entre las entidades \textbf{alumno} y \textbf{apoderado} que es de \textbf{n a 1}.\bigskip \textbf{\textit{profesor}} adquiere la clave foránea \textbf{\textit{id\_ciudad}} debido a que la relación entre las entidades \textbf{\textit{profesor}} y \textbf{\textit{ciudad}} es de \textbf{\textit{n a 1}}.\bigskip \textbf{\textit{actividad}} adquiere la clave foránea \textbf{\textit{rut\_profesor}} debido a que las relaciones entre las otras entidades \textbf{\textit{actividad}} y \textbf{\textit{profesor}} es de \textbf{\textit{1 a n}}.\bigskip \textbf{\textit{nivel}} no adquiere ninguna clave foránea debido a que las relaciones entre las otras entidades son de \textbf{\textit{1 a n}}.\bigskip \textbf{\textit{bloque}} no adquiere ninguna clave foránea debido a que las relaciones entre las otras entidades son de \textbf{\textit{1 a n}}.\bigskip \textbf{\textit{curso}} adquiere la clave foránea \textbf{\textit{rut}} debido a que las relaciones entre las entidades \textbf{\textit{curso}} y \textbf{\textit{profesor}} es de \textbf{\textit{n a 1}}.\bigskip \textbf{\textit{asignatura}} adquiere la clave foránea \textbf{\textit{rut\_profesor}} debido a que la relación entre las entidades \textbf{\textit{asignatura}} y \textbf{\textit{profesor}} es de \textbf{\textit{n a 1}}.\bigskip \textbf{\textit{participar}} es creado con las claves foráneas \textbf{\textit{rut\_alumno}} y \textbf{\textit{id\_actividad}} dado que la relación entre \textbf{\textit{alumno}} y \textbf{\textit{actividad}} es de \textbf{\textit{n a n}}.\bigskip \textbf{\textit{actividad\_nivel}} es creado con las claves foráneas \textbf{\textit{id\_actividad}} y \textbf{\textit{id\_nivel}} dado que la relación entre \textbf{\textit{actividad}} y \textbf{\textit{nivel}} es de \textbf{\textit{n a n}}.\bigskip \textbf{\textit{actividad\_bloque}} es creado con las claves foráneas \textbf{\textit{id\_actividad}} y \textbf{\textit{id\_bloque}} dado que la relación entre \textbf{\textit{actividad}} y \textbf{\textit{bloque}} es de \textbf{\textit{n a n}}.\bigskip \textbf{\textit{horario}} es creado con las claves foráneas \textbf{\textit{id\_asignatura}} y \textbf{\textit{id\_bloque}}, y queda con el atributo \textbf{\textit{sala}} dado que la relación entre \textbf{\textit{asignatura}} y \textbf{\textit{bloque}} es de \textbf{\textit{n a n}}.\bigskip \textbf{\textit{registro}} es creado con las claves foráneas \textbf{\textit{rut\_alumno}} y \textbf{\textit{id\_asignatura}}, y queda con el atributo \textbf{\textit{nota}} dado que la relación entre \textbf{\textit{alumno}} y \textbf{\textit{asignatura}} es de \textbf{\textit{n a n}}.\bigskip \textbf{\textit{cursar}} es creado con las claves foráneas \textbf{\textit{rut\_alumno}} y \textbf{\textit{id\_curso}} dado que la relación entre \textbf{\textit{alumno}} y \textbf{\textit{curso}} es de \textbf{\textit{n a n}}.\bigskip \textbf{\textit{asociado}} es creado con las claves foráneas \textbf{\textit{id\_curso}} y \textbf{\textit{id\_asignatura}} dado que la relación entre \textbf{\textit{curso}} y \textbf{\textit{asignatura}} es de \textbf{\textit{n a n}}.\bigskip \textbf{\textit{asistente}} es creado opcionalmente con las claves foráneas \textbf{\textit{rut\_profesor}} y \textbf{\textit{id\_curso}} dado que la relación entre \textbf{\textit{curso}} y \textbf{\textit{profesor}} es de \textbf{\textit{n a 1 con mínimo de 0}}.\bigskip \newpage \section{Script SQL} \subsection{Crear tablas} \lstinputlisting{crear_tablas.sql} \newpage \subsection{Insertar duplas} \lstinputlisting{insertar_duplas.sql} \end{document}