Este documento describe el proyecto de una base de datos llamada SQLUC desarrollada por estudiantes de la Universidad de Cuenca. El proyecto utiliza patrones de diseño como Chain of Responsibility, Proxy, Factory Method y Template Method. La base de datos almacena y manipula datos en tablas y registros utilizando archivos CSV y la librería Apache Commons CSV. El código fuente está disponible en un enlace de GitHub.
1. UNIVERSIDAD DE CUENCA
GESTOR DE BASE DE DATOS(SQLUC)
Integrantes:
Tania Landivar
Jonnathan Peñaranda
Gabriela Verdugo
Asignaturas:
Análisis y Diseño de Software II
Programación III: Estructura de Archivos
2. Índice
1. Introducción al proyecto
2. Objetivos
3. Contenido
3.1 Diseño e implementación de SQLUC
3.1.1 Patrones Utilizados
3.1.1.1. Chain of Responsability
3.1.1.2. Proxy
3.1.1.3. Factory Method
3.1.1.4. Template Method
3.1.2. Diagrama de Clases Completo
3.2. Estructuras de datos utilizadas
3.3. Estructuras de archivos
3.4. Librerías utilizadas.
3.5. Conclusiones
3.5. Sintaxis del Sistema
3.6. Enlaces de interés
3. Introducción
SQLUC es un sistema de gestión de base de
datos, el cual nos permitirá almacenar, manipular y
recuperar datos almacenados en la base de datos.
El sistema incluye operaciones como crear,
modificar, borrar, tablas o registros de la base de
datos.
4. Objetivos:
● Usar patrones de creación, patrones
estructurales o patrones de comportamiento
para la elaboración de la Base de Datos.
● Identificar qué patrón puede ser utilizado en
diferentes partes de la implementación de la
Base de Datos.
● Con el uso de los patrones mencionados
anteriormente facilitar la codificación y el
diseño del proyecto.
● Hacer el uso mínimo de estructuras de datos.
6. ❖ Chain of Responsability
Chain of Responsability:
❏ Aprobador: Es nuestro Handler que proporciona el método
analizarInstruccion, que será el método utilizado para
reenviar las solicitudes.
❏ GestorTabla, GestorRegistros, TablaSelectRegistros,
TablaUnirRegistros: Son nuestros ConcreteHandler
encargados de controlar o responder a la petición que se le
solicita.
10. ❖ Proxy protección
Lo que hace el proxy es analizar qué la instrucción que recibe desde
los ConcreteHandler que son GestorTabla y GestorRegistros,
cumplan con la sintaxis adecuada para ejecutar dicha instrucción, es
decir evalúa la expresión que ingrese el usuario.
Partes de un proxy:
Subject :GestorTabla, GestorRegistros. Es clase común entre el
proxy y el objeto real.
Proxy: ProxyGestorTabla, ProxyGestorRegistros. Mantiene una
referencia al objeto real.
RealSubject: FabricaTabla, FabricarRegistros. Objeto real que el
proxy representa.
16. Factory Method:
Dentro del sistema el “Factory Method” nos permite que la clase
delegue a sus subclases que objeto debe ser creado. En este
sistema hemos utilizado dicho patrón para la creacion y
manipulacion (Eliminar o Modificar) de Tablas y Registros.
17. ❖ Factory Method.
Tablas:
❏ Tabla: Se define una clase abstracta de los objetos que se
van a crear.
❏ Fábrica Tabla: De acuerdo al comando indicado se devuelve
la instancia que se necesita.
❏ Tabla Crear, Tabla Eliminar, Tabla Modificar: Son los
productos concretos.
24. ❖ Factory Method.
Registros:
❏ Registro: Define una clase abstracta de los objetos que se
van a crear.
❏ Fabrica Registros: De acuerdo al comando indicado
devuelve la instancia que se necesita.
❏ RegistrosAAgregar, RegistrosAModificar,
RegistrosAEliminar: Estas clases son los productos
concretos.
31. ❖ Template Method
❏ Template: Es la interfaz que implementa el método Template y los
métodos que deben implementar siempre las clases que
implementen esta interfaz.
❏ TablaCrear, TablarEliminar, TablaModificar: Son las clases
concretas del manejo de las tablas que implementan los métodos de
la clase template.
❏ RegistrosAAgregar, RegistrosAModificar, RegistrosAEliminar:
Son las clases concretas para el manejo de los registros estas
clases implementan los métodos de la clase Template.
36. ESTRUCTURAS DE DATOS UTILIZADAS
ArrayList: Se utilizó para cargar los
campos ya se de las tablas o
registros.
37. ESTRUCTURA DE ARCHIVOS
● Se utilizarán archivos(.csv), para hacer físico las tablas con
sus respectivos registros.
● Tendremos un archivo llamado METADATA, en el cual
constará el nombre de las tablas y cada tabla con el número
de registros que tiene, los campos , su estado de borrado y lo
más importante la clave para identificar cada tabla.
40. ❖ La programación por capas se refiere a un estilo de programación
que tiene como objetivo separar la lógica de diseño de la lógica de
negocios. Una de las ventajas que podemos destacar sobre este
estilo es que el desarrollo del software se puede llevar a cabo en
varios tipos de niveles, así, cuando suceda algún cambio solo nos
iremos sobre el nivel requerido.
41. ❖ En nuestro sistema hemos implementado tres capas en cuanto a lo que
es el gestor base de datos
➢ Capa de Lógica.
➢ Capa de Presentación
➢ gestorbd
❖ Para la implementación de los patrones de Diseño hemos
implementado las capas necesarias para identificar cada uno de los
patrones.
➢ p.cadenaResponsibilidad
➢ p.fabricaRegistros
➢ p.fabricasTabla
➢ p.proxy
➢ p.templateMethod
45. LIBRERÍAS UTILIZADAS
Permite crear ficheros CSV (del inglés comma-separated values)
son un tipo de documento sencillo para representar datos en
forma de tabla, en las que las columnas se separan por comas y
las filas por saltos de línea.
Hace mucho más sencilla el acceso al contenido de estos
ficheros.
46. CONCLUSIONES
● En la realización del proyecto no sirvió de gran ayuda hacer uso de la
programación en capas para así hacer una buena distribución de cada una de
las clases y para realizar cambios cuando fueron necesarios sólo en la capa que
contenía la clase que necesitaba ser cambiada.
● Gracias al uso de patrones ya sea de creación, comportamiento o estructurales
se facilitó la codificación dentro de la base de datos.
● Para que la implementación sea fácil de compresión para otros programadores
no se debe implementar más patrones de los posibles dentro del diseño del
proyecto o sistema ya que en lugar de tornarse fácil de compresión lo haríamos
difícil y confuso para que alguien más pueda implementarlo.
● El uso de estructuras de datos también fue de gran ayuda para asi hacer el
manejo de los datos más llevadero
47. SINTAXIS DEL SISTEMA
TABLAS
Eliminar tablas:
ELIMINAR TABLA nombre_tabla
Modificar tablas:
MODIFICAR TABLA nombre_tabla CAMPO nombre_campo POR nombre_campo
Crear tablas:
CREAR TABLA nombre_tabla CAMPOS campo1, … , campoN CLAVE campo1
LONGITUD ##
48. REGISTROS
Crear Registro:
CREAR REGISTRO nombre_tabla VALOR vCampo1 , vCampo2 ,... , vCampoN
Modificar Registro:
MODIFICAR REGISTRO nombre_tabla CLAVE valorCampoClave CAMPO campo
POR valor_campo_nuevo
Eliminar Registro:
ELIMINAR REGISTRO nombre_tabla CLAVE valorCampoClave
49. SELECCIONAR TABLAS
SELECCIONAR DE nombre_tabla DONDE nombre_campo = “Algo”
JOIN - UNIR TABLAS
UNIR nombre_tabla1, nombre_tabla2 POR nombre_campo = ”Algo”
50. ENLACES DE INTERÉS
● Ficheros CSV : https://www.adictosaltrabajo.com/tutoriales/csv/
ENLACE DEL CÓDIGO DEL PROYECTO.
● https://github.com/TaniaLandivar/Gestor-BaseDatos-SQLUC/tree/master