Sistema de gestión de base de datos SQL UC

69
SISTEMA DE GESTIÓN DE BASE DE DATOS SQL UC Análisis y Diseño de Software II Programación III: Estructura de Archivos

Transcript of Sistema de gestión de base de datos SQL UC

Page 1: Sistema de gestión de base de datos SQL UC

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQL UC

Análisis y Diseño de Software IIProgramación III: Estructura de Archivos

Page 2: Sistema de gestión de base de datos SQL UC

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQLUC

Autores:Christian Collaguazo MallaDaniel Gomez JaramilloDavid Valladarez Muñoz

Asignaturas:

Análisis y Diseño de Software IIProgramación III: Estructura de Archivos

2017 Facultad de Ingeniería

Page 3: Sistema de gestión de base de datos SQL UC

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQLUC

CONTENIDOPRESENTACIÓN

Parte A Análisis y diseño de SQLuc

Parte B Ejecuciones

Diseño del Sistema

Programación del sistema

Enlaces de interés

Contenido de la presentación

Aspectos generales del sistema

Ejecución de SQLuc

Parte C Conclusiones y recomendaciones

Page 4: Sistema de gestión de base de datos SQL UC

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQLUC

AVANCEPRESENTACIÓN

Análisis y diseño de SQLuc

Diseño del Sistema

Programación del sistema

Avance de la presentación

Aspectos generales del sistema

Parte A

Page 5: Sistema de gestión de base de datos SQL UC

ASPECTOS GENERALES DEL SISTEMASistema de gestión de base de datos SQLUC

Page 6: Sistema de gestión de base de datos SQL UC

OBJETIVOS1. El sistema debe tener una interfaz en la cual el

usuario pueda ingresar los comandos para

realizar una acción específica.

2. Se solicita un sistema que permita la realización

de tres acciones fundamentales para la gestión

de base de datos: mantenimiento de tablas,

registros y consultas.

Page 7: Sistema de gestión de base de datos SQL UC

1. Creación

2. Eliminación

3. Edición

TABLAS

CREAR TABLA nombre_tabla CAMPOS campo1, … , campoN CLAVE campo1 LONGITUD ##

ELIMINAR TABLA nombre_tabla

MODIFICAR TABLA nombre_tabla CAMPO nombre_campo POR nombre_campo

Page 8: Sistema de gestión de base de datos SQL UC

1. Inserción

2. Eliminación

3. Edición

REGISTROS

CREAR REGISTRO nombre_tabla VALOR vCampo1 , vCampo2 ,... , vCampoN

ELIMINAR REGISTRO nombre_tabla CLAVE valorCampoClave

MODIFICAR REGISTRO nombre_tabla CLAVE valorCampoClave CAMPO campo POR valor_campo_nuevo

Page 9: Sistema de gestión de base de datos SQL UC

1. Selección

2. Join(Unión)

CONSULTAS

SELECCIONAR DE nombre_tabla DONDE nombre_campo = “Algo”

UNIR nombre_tabla1, nombre_tabla2 POR nombre_campo

Page 10: Sistema de gestión de base de datos SQL UC

Archivo que sirve para almacenar la información de las tablas registradas en el sistema,

así como el número de registros de dicha tabla, los campos que posee, el campo clave

y la longitud que deberán llevar cada uno de los registros.

Formato del archivo CSV (atributos separados por comas):

ARCHIVO META.BD

nombre_tabla,numero_registros,campo_clave,longitud_campos,campos...

Page 11: Sistema de gestión de base de datos SQL UC

DISEÑO DEL SISTEMA Sistema de gestión de base de datos SQLUC

Page 12: Sistema de gestión de base de datos SQL UC

PATRÓN PROXY - PROTECCIÓN

¿Qué un Proxy?

1. Patrón de diseño Estructural

2. Intermediario entre un objeto y los demás que lo utilizan

3. Controla el acceso al objeto original.

Page 13: Sistema de gestión de base de datos SQL UC

PATRÓN PROXY - PROTECCIÓN

¿Por qué hemos utilizado el patrón Proxy?

1. Validar que el cliente haya utilizado la sintaxis correcta para realizar la acción requerida.

2. Validar que la acción a realizar cumpla con todos los requisitos necesarios.

3. Acto siguiente empezar el proceso de acción pertinente.

Page 14: Sistema de gestión de base de datos SQL UC

PATRÓN PROXY - PROTECCIÓN

Actores de un Proxy

1. Subject: Define una interfaz común para el

proxy y el objeto real.

2. Proxy: Mantiene una referencia al objeto

real, mientras que proporciona una interfaz

idéntica a la del objeto real y controla el

acceso a este objeto, siendo responsable

de crearlo y borrarlo.

3. RealSubject: Clase del objeto real que el

proxy representa.

Page 15: Sistema de gestión de base de datos SQL UC

PATRÓN PROXY - PROTECCIÓN

Page 16: Sistema de gestión de base de datos SQL UC

ProgramaciónProxy

Page 17: Sistema de gestión de base de datos SQL UC

SUBJECT (Interface GestionBD)

La interface GestionBD operara como Subject del patrón Proxy y proveerá de los métodos

abstractos para que lo implementen las clases Proxy y RealSubject

Page 18: Sistema de gestión de base de datos SQL UC

Clase Proxy (Clase GestionBDProxy)

La clase GestionBDProxy implementa la interface GestionBD.

El método “Peticion” validará la petición que el usuario registre en la interfaz gráfica.

Page 19: Sistema de gestión de base de datos SQL UC

Val

idac

ión

del

Tip

o d

e A

cció

n

Page 20: Sistema de gestión de base de datos SQL UC

Después de que se compruebe de que la acción identificada a realizar cumple todos los requerimientos necesarios, se procede a aceptar la solicitud.

Page 21: Sistema de gestión de base de datos SQL UC

Clase RealSubject (Clase GestionBDReal)

Proveerá el método abstracto “Peticion” que deberán implementar las clases GestionBDProxy y GestionBDReal

Page 22: Sistema de gestión de base de datos SQL UC

Acc

ión

Rea

l

Page 23: Sistema de gestión de base de datos SQL UC

PATRÓN ABSTRACT FACTORY

¿Qué es Abstract Factory?

Permite trabajar con objetos de distintas familias de

manera que las familias no se mezclen entre sí y

haciendo transparente el tipo de familia concreta

que se esté usando.

Page 24: Sistema de gestión de base de datos SQL UC

Partes del Abstract Factory

AbstractFactory: declara una interfaz para la creación de objetos de productos abstractos.

ConcreteFactory: implementa las operaciones para la creación de objetos de productos

concretos.

AbstractProduct: declara una interfaz para los objetos de un tipo de productos.

ConcreteProduct: define un objeto de producto que la correspondiente factoría concreta se

encargaría de crear, a la vez que implementa la interfaz de producto abstracto.

Cliente: emplea solamente las interfaces declaradas en la factoría y en los productos abstractos.

PATRÓN ABSTRACT FACTORY

Page 25: Sistema de gestión de base de datos SQL UC

PATR

ÓN

AB

STR

AC

T FA

CTO

RY

Page 26: Sistema de gestión de base de datos SQL UC

PATRÓN ABSTRACT FACTORY

Page 27: Sistema de gestión de base de datos SQL UC

ProgramaciónAbstract Factory

Page 28: Sistema de gestión de base de datos SQL UC

Abstract Factory (Procesos Factory)

Page 29: Sistema de gestión de base de datos SQL UC

Concrete Factory

Tablas

Page 30: Sistema de gestión de base de datos SQL UC

Concrete Factory

Registros

Page 31: Sistema de gestión de base de datos SQL UC

Abstract Products

Page 32: Sistema de gestión de base de datos SQL UC

Abstract Products

Page 33: Sistema de gestión de base de datos SQL UC

Concrete Product

Page 34: Sistema de gestión de base de datos SQL UC

PATRÓN TEMPLATE METHOD

¿Qué es Template Method?

Define el funcionamiento general de un algoritmo en una operación de una clase y permite que subclases redefinan ciertos pasos del algoritmo sin cambiar su comportamiento general.

Page 35: Sistema de gestión de base de datos SQL UC

PATRÓN TEMPLATE METHOD

Partes del Patrón Template Method

AbstractTemplate: Implementa un

método plantilla que define el esqueleto

de un algoritmo y define métodos

abstractos que implementan las

subclases concretas.

ConcreteTemplate: Implementa los métodos abstractos para realizar los pasos del algoritmo que son específicos de la subclase.

Page 36: Sistema de gestión de base de datos SQL UC

PATRÓN TEMPLATE METHOD

¿Por qué hemos implementado un Template Method?

Uno de los requerimientos es que en la base de datos se encuentre un archivo llamado MetaData en el cual se encuentren especificado los atributos de cada tabla.

El usuario al momento de ingresar los comandos para realizar cualquier acción el sistema llamara a los métodos de identificar la orden, realizar la acción y actualizar el META.BD.

Por lo tanto, la aplicación del patrón Template nos ayudará a que el sistema con la llamada a un solo método realice todas estas acciones y que el orden de llamada a estos métodos no se pueda modificar.

Page 37: Sistema de gestión de base de datos SQL UC

PATRÓN TEMPLATE METHOD

Page 38: Sistema de gestión de base de datos SQL UC

TEMPLATE METHOD (CreacionTemplate)

Page 39: Sistema de gestión de base de datos SQL UC

ProgramaciónTemplate Method

Page 40: Sistema de gestión de base de datos SQL UC

TEMPLATE METHOD (CreacionTemplate)

Page 41: Sistema de gestión de base de datos SQL UC

TEMPLATE METHOD (CreacionTemplate)

Page 42: Sistema de gestión de base de datos SQL UC

TEMPLATE METHOD (CreacionTemplate)

Page 43: Sistema de gestión de base de datos SQL UC

TEMPLATE METHOD (CreacionTemplate)

Page 44: Sistema de gestión de base de datos SQL UC

OTROS PROCESOS EXTERNOS

Page 45: Sistema de gestión de base de datos SQL UC

OTROS PROCESOS EXTERNOS Los procesos SELECCIONAR TABLA y UNIR TABLA, quedaron fuera de proceso del Abstract Factory y del Template Method ya que son procesos solo de consulta y no requieren escribir, modificar ni eliminar ninguna tabla ni registro. Este proceso es solo de busqueda y de lectura de datos.

Page 46: Sistema de gestión de base de datos SQL UC

Programación Seleccionar Tabla

Page 47: Sistema de gestión de base de datos SQL UC

Programación Unir Tablas

Page 48: Sistema de gestión de base de datos SQL UC

Diagrama de clases de SQLuc

Page 49: Sistema de gestión de base de datos SQL UC

PROGRAMACIÓN DEL SISTEMASistema de gestión de base de datos SQLUC

Page 50: Sistema de gestión de base de datos SQL UC

Identificación de sentencias

En el comando recibido por el cliente, se realizó la búsqueda de las palabras reservadas en el sistema para identificar con qué caso se va trabajar posteriormente. Los casos posibles son:

static final int CREARTABLA = 101;static final int MODIFICARTABLA = 102;static final int ELIMINARTABLA = 103; static final int CREARREGISTRO = 201;static final int MODIFICARREGISTRO = 202;static final int ELIMINARREGISTRO = 203; static final int SELECCIONARTABLAS = 301;static final int JOIN = 302;

Page 51: Sistema de gestión de base de datos SQL UC

Identificación de sentencias

La busqueda se la realiza con el método contains() de la clase String de Java, si no se encuentra ningún caso se lanza una excepción que es capturada en las sentencias try-catch de donde se llamó a este método.

if(comando.replace(" ", "").contains("CREARTABLA"))caso = CREARTABLA;

else if(comando.replace(" ", "").contains("MODIFICART"))caso = MODIFICARTABLA;

else if(comando.replace(" ", "").contains("ELIMTABLA"))caso = ELIMINARTABLA;

.

.

.else

throw new SecurityException("Lo sentimos, no se ha entendido esa orden.");

Page 52: Sistema de gestión de base de datos SQL UC

Validación de sentencias

A un atributo de una sentencia, se lo busca segun la posicion a la que le corresponda dentro de dicha sentencia, por ejemplo el nombre de una tabla deberá ir necesariamente después de la palabra reservada CREAR TABLA:

StringBuffer atributo = new StringBuffer();

for(;i<comando.length();i++){if(comando.charAt(i)!=' ')

atributo.append(comando.charAt(i));else

break;}

nombreTabla = atributo.toString();

Page 53: Sistema de gestión de base de datos SQL UC

Validación de sentencias

Una validación que comparten casi todos los procesos es validar si el nombre de la tabla que se escribió en la línea de comandos existe o no:

private boolean BuscarTabla(String nombreTabla){...String fileMETA = "filesBD\\META.bd";if(!new File(fileMETA).exists())

return false;try {

CsvReader ar = new CsvReader(fileMETA); while(ar.readRecord()){

if(ar.get(0).equals(nombreTabla)){ar.close();

return true;} }

}...

}

Page 54: Sistema de gestión de base de datos SQL UC

Validación de sentencias

Si se llega a producir un error en ejecución o se desea lanzar un error por algún problema en la validación, se lanza una excepción para que esta sea capturada y mostrada en la interfaz gráfica de la aplicación.

Ejemplos:

throw new Error("Lo sentimos, no se ha entendido esa orden.");

throw new Error("Error, el campo clave no está dentro de los campos especificados.");

throw new Error("Error, en uno de los campos se excede la longitud máxima posible");

Page 55: Sistema de gestión de base de datos SQL UC

Paso de parámetros

Dentro de las clases del proyecto, existen algunos métodos que varían según el caso el número de parámetros a recibir, es por ello que en muchos de estos métodos se pasaron arreglos de argumentos de tipo Object para así poder cumplir con cada caso.

Ejemplo de ENVÍO:

Object[] arg = {"MODIFICARREGISTRO",nombreTabla,valorCampoClave,nombreCampo,valorCampo,posicionCampo};

new GestionBDReal().Peticion(arg);

Page 56: Sistema de gestión de base de datos SQL UC

Paso de parámetros

Dentro de las clases del proyecto, existen algunos métodos que varían según el caso el número de parámetros a recibir, es por ello que en muchos de estos métodos se pasaron arreglos de argumentos de tipo Object para así poder cumplir con cada caso.

Ejemplo de RECEPCIÓN:

String caso = (String) args[0]

String nombreTabla = (String) args[1];ArrayList<String> campos = (ArrayList<String>) (List) args[2];String campoClave = (String) args[3];int longitudCampos = (int) args[4];

Page 57: Sistema de gestión de base de datos SQL UC

Archivo META.BD

Todo proceso que se realice debera constar en el archivo META.BD en el que consta toda la informacion con respecto a una tabla.

Este archivo es de tipo CSV separado por comas, para que al momento de buscar y/o modificar algun atributo de una tabla, este se lo realice de forma simple y rapida.

El archivo META.BD lleva el siguiente formato:

nombre_tabla,numero_registros,campo_clave,longitud_

campos,campos...

Page 58: Sistema de gestión de base de datos SQL UC

LIBRERÍAS IMPLEMENTADAS

JAVA CSV

Java CSV es una pequeña biblioteca Java de código abierto para leer y escribir archivos de texto CSV y delimitados por texto. Todos los tipos de archivos CSV pueden ser manejados, texto calificado, Excel formateado, etc

Page 59: Sistema de gestión de base de datos SQL UC

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQLUC

AVANCEPRESENTACIÓN

Ejecuciones

Avance de la presentación

Parte B

Ejecución de SQLuc

Page 60: Sistema de gestión de base de datos SQL UC

EJECUCIÓN DE SQLucSistema de gestión de base de datos SQLUC

Page 61: Sistema de gestión de base de datos SQL UC

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQLUC

AVANCEPRESENTACIÓN

Conclusiones y recomendaciones

Avance de la presentación

Parte C

Conclusiones y recomendaciones

Enlaces de interés

Page 62: Sistema de gestión de base de datos SQL UC

CONCLUSIONES Y RECOMENDACIONESSistema de gestión de base de datos SQLUC

Page 63: Sistema de gestión de base de datos SQL UC

CONCLUSIONES

El sistema de gestión de base de datos SQL_UC nos permite ingresar comandos de tal manera que podremos administrar la información, crear, modificary eliminar tablas las cuales también nos permiten recuperar los datos.

El usuar patrones de diseño nos ayudó a desarrollar una aplicación robusta y fácil de mantener, en el hecho de arreglar errores que surgieron a la hora de programar.

Page 64: Sistema de gestión de base de datos SQL UC

Sistema operativo - (Rutas)

Para el desarrollo de la aplicación se empleó el sistema operativo Microsoft Windows, por este motivo, existe en el lenguaje Java ciertas particularidades de sintaxis que las diferencian entre otros sistemas operativos como la distribución de Linux: Ubuntu

Una de las particularidades son la utilización de rutas para almacenar un archivo(.txt, .csv, entre otros)

CONCLUSIONES

Page 65: Sistema de gestión de base de datos SQL UC

RECOMENDACIONES Manejo de archivos - (Archivos abiertos)

Page 66: Sistema de gestión de base de datos SQL UC

RECOMENDACIONES Manejo de archivos - (Caracteres especiales)

Al ingresar caracteres especiales los datos sufren una adulteracion y por consiguiente los datos de una tabla no coinciden con los datos del archivo META.BD generando errores de esta especie:

Error interno, no se han encontrado los datos de la tabla especificada.

Page 67: Sistema de gestión de base de datos SQL UC

RECOMENDACIONES Programación simultánea

(Código en tiempo real)

Page 68: Sistema de gestión de base de datos SQL UC

ENLACES DE INTERÉSSistema de gestión de base de datos SQLUC

Lenguaje ED

Analizador léxico que transforma el código escrito en un lenguaje de programación con sentencias en español a Lenguaje C.

Enlace: https://github.com/esdanielgomez/LenguajeED

Sistema de gestión de base de datos - SQL

Código fuente del actual proyecto junto con la libreria CSV para el manejo de archivos.

Enlace: https://github.com/esdanielgomez/SQLuc

Page 69: Sistema de gestión de base de datos SQL UC

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQL UC

Análisis y Diseño de Software IIProgramación III: Estructura de Archivos