sistema de gestión de base de datos sql uc
TRANSCRIPT
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