Sistema de gestión de base de datos SQL UC

Post on 22-Jan-2018

195 views 1 download

Transcript of 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

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

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

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

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

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.

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

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

1. Selección

2. Join(Unión)

CONSULTAS

SELECCIONAR DE nombre_tabla DONDE nombre_campo = “Algo”

UNIR nombre_tabla1, nombre_tabla2 POR nombre_campo

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...

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

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.

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.

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.

PATRÓN PROXY - PROTECCIÓN

ProgramaciónProxy

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

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.

Val

idac

ión

del

Tip

o d

e A

cció

n

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.

Clase RealSubject (Clase GestionBDReal)

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

Acc

ión

Rea

l

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.

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

PATR

ÓN

AB

STR

AC

T FA

CTO

RY

PATRÓN ABSTRACT FACTORY

ProgramaciónAbstract Factory

Abstract Factory (Procesos Factory)

Concrete Factory

Tablas

Concrete Factory

Registros

Abstract Products

Abstract Products

Concrete Product

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.

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.

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.

PATRÓN TEMPLATE METHOD

TEMPLATE METHOD (CreacionTemplate)

ProgramaciónTemplate Method

TEMPLATE METHOD (CreacionTemplate)

TEMPLATE METHOD (CreacionTemplate)

TEMPLATE METHOD (CreacionTemplate)

TEMPLATE METHOD (CreacionTemplate)

OTROS PROCESOS EXTERNOS

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.

Programación Seleccionar Tabla

Programación Unir Tablas

Diagrama de clases de SQLuc

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

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;

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.");

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();

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;} }

}...

}

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");

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);

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];

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...

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

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQLUC

AVANCEPRESENTACIÓN

Ejecuciones

Avance de la presentación

Parte B

Ejecución de SQLuc

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

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

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

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.

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

RECOMENDACIONES Manejo de archivos - (Archivos abiertos)

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.

RECOMENDACIONES Programación simultánea

(Código en tiempo real)

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

SISTEMA DE GESTIÓN DE BASE DE DATOS

SQL UC

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