Sistema de gestión de base de datos que emplea las sentencias básicas de SQL en el castellano.
Enlaces de interés:
Código fuente en Java: https://github.com/esdanielgomez/SQLuc
Documento base de diseño: https://es.scribd.com/document/338039295/Sistema-de-gestion-de-base-de-datos-SQL-UC
Autores, diseñadores y desarrolladores:
Christian Collaguazo Malla
Daniel Gomez Jaramillo
David Valladarez Muñoz
metodos de fitomejoramiento en la aolicacion de plantas
Sistema de gestión de base de datos SQL UC
1. SISTEMA DE GESTIÓN DE BASE DE DATOS
SQL UC
Análisis y Diseño de Software II
Programación III: Estructura de Archivos
2. SISTEMA DE GESTIÓN DE BASE DE DATOS
SQLUC
Autores:
Christian Collaguazo Malla
Daniel Gomez Jaramillo
David Valladarez Muñoz
Asignaturas:
Análisis y Diseño de Software II
Programación III: Estructura de Archivos
2017 Facultad de Ingeniería
3. SISTEMA DE GESTIÓN DE BASE DE
DATOS
SQLUC
CONTENIDO
PRESENTACIÓ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
4. SISTEMA DE GESTIÓN DE BASE DE
DATOS
SQLUC
AVANCE
PRESENTACIÓ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
6. OBJETIVOS
1. 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.
7. 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
8. 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
10. 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...
12. 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.
13. 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.
14. 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.
17. 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
18. 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.
20. 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.
21. Clase RealSubject (Clase GestionBDReal)
Proveerá el método abstracto “Peticion” que deberán implementar las clases
GestionBDProxy y GestionBDReal
23. 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.
24. 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
34. 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.
35. 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.
36. 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.
45. 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.
50. 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;
51. 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.");
52. 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();
53. 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 = "filesBDMETA.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;}
}
}
...
}
54. 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");
55. 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);
56. 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];
57. 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...
58. 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
59. SISTEMA DE GESTIÓN DE BASE DE
DATOS
SQLUC
AVANCE
PRESENTACIÓN
Ejecuciones
Avance de la presentación
Parte B
Ejecución de SQLuc
61. SISTEMA DE GESTIÓN DE BASE DE
DATOS
SQLUC
AVANCE
PRESENTACIÓN
Conclusiones y recomendaciones
Avance de la presentación
Parte C
Conclusiones y recomendaciones
Enlaces de interés
63. 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.
64. 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
66. 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.
68. ENLACES DE INTERÉS
Sistema 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
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