Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta bases de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta bases de datos. Mostrar todas las entradas

lunes, 10 de agosto de 2015

Importar Tablas y Vistas de Sqlite a .CSV

Importar 

Tablas y Vistas 

desde Sqlite a .CSV


Pues trabajando el otro día  con una base de dato Sqlite3, con el complemento de firefox Sqlite Manager, quise pasar una vista que tenia en la base de datos al formato .CSV, (datos separados por coma), vi las opciones de exportación que tiene este programa, y no encontré como hacerlo.  Entonces me puse a trastear en google, y encontré como hacerlo usando la terminal y el comando sqlite3.

Pasos a seguir:

1) Escribimos en la terminal el comando sqlite3 seguido del nombre de la base de datos (tienes que tener instalado sqlite3):

$sqlite3 Nombre.sqlite


2) Se nos abre el  prompt de sqlite3

SQLite version 3.8.7.4 2014-12-09 01:34:36
Enter ".help" for usage hints
sqlite>

3) Y escribimos estas ordenes:

sqlite>.headers on

sqlite>.mode csv

sqlite>.output out.csv

sqlite>select * from Tabla_Vista;


4) De esta forma el resultado de la sentencia  "select * from Tabla_Vista" sera escrita en el archivo out.csv. Comentarios que es muy rápida, en mi ordenador era prácticamente inmediata la creación del archivo .csv

5) y para salir del prompt de sqlite3 escribimos:

sqlite>.exit


Ahora tendremos en el directorio que estemos el archivo out.csv con los datos, para poderlos exportar a LibreOffice Calc,  Excel o otros programas.


Saludos

fuente:
http://nelsonkewebs.blogspot.com.es/2014/05/como-exportar-datos-csv-desde-sqlite3.html?m=1









miércoles, 11 de marzo de 2015

Diseño De Una Base de Datos: respondiendo a una pregunta



  Diseño De Una Base de Datos: respondiendo a una pregunta.



Os traigo otra perla, esta vez de Shordi, del foro de gambas-es.org.
Se trata de explicar como se debería diseñar una base de datos.


Para iniciar el diseño, no debes pensar en maneras de entrar los datos o en la cualidad de cada campo. Eso vendrá después.
Para diseñar una base de datos, escribir un programa, hacer un guiso o escribir una novela nuestro cerebro funciona de la misma manera.

Un cocinero no empieza pensando qué ingredientes se echan con los dedos y cuales con la cuchara. Empieza con identificar los ingredientes.
Un Escritor no empieza pensando qué corbatas llevarán los  personajes y de qué color. Empieza identificando los personajes que van a intervenir.
Una base de datos no se empieza pensando qué pantallas vas a rellenar o qué dato será obligatorio: Se empieza identificando las "Entidades" (Clases) que intervienen en ella.
Los Tipos de Entrada, los modos y formatos de salida, la cualidad de sus relaciones, etc. etc. eso vendrá después.

En otras palabras olvídate, de momento, de nada que no sea las propiedades de las Clases. Yo prefiero la palabra "Entidad" que implica que de lo que hablo tiene "existencia" por sí misma, dejando eso de "Clases" para la POO a la hora de diseñar el programa. Como norma general puedes identificar "Entidad" con "Tabla Maestra" (hay entidades complejas, pero eso es otra historia)

Por lo que cuentas en tu diseño hablas de manejar: Libros, Autores, Editoriales, Citas, Tesis.

Empieza por eso: Pregúntate Qué es y de Qué se compone un Libro, un Autor, una Cita, etc.
Eso te dará los campos y su tipo de una forma natural.
Es evidente que 
 -Un libro tiene: Título, Autor, editorial, Nº de páginas, etc.
 -Un Autor tiene: Un nombre, una fecha de nacimiento, un país de nacimiento, una biografía, una bibliografía, etc. etc.
 -Una Cita tiene: Un texto, un libro de referencia, una página donde aparece, un libro, o varios, donde es citada, etc. etc.

En el desarrollo de esto verás que el tipo de dato lo marca la naturaleza del mismo y empezarán a surgir las relaciones entre ellos. Por ejemplo el número de página donde aparece la cita no puede ser mayor que el número de páginas del libro, etc. También te encontrarás que, a lo mejor, te aparecen entidades en las que, de entrada, no habías pensado. Por ejemplo, una Tesis tiene un Autor, no confundir con el autor de los libros que se citan ¿Será necesario también una tabla de autores de Tesis? ¿Qué características tendría?, etc. etc.

Una vez que tengas diseñadas las características (campos) de tus "Entidades" (tablas maestras), tendrás que relacionarlas entre sí (esta es la esencia de las Bases de Datos Relacionales), de forma que se constituyan en una estructura de datos coherentes y eficaz. Para ello necesitas encontrar primero de todo la Clave Primaria de cada Entidad, es decir qué identifica cada fila de una forma única y definitiva entre todas las de su clase y construir los índices que apunten a esas claves.
Así una editorial tiene un Id del registro mercantil, Un libro un ISBN, etc. Esto es básico: Dos libros pueden tener el mismo título, dos Autores el mismo nombre, etc.
Puedes construir tus claves mediante la unión de varios campos, Título+Autor o puedes crear campos que sirvan de índice (autonuméricos) para ello.

Con los indices construidos estableceremos las relaciones entre las tablas. Así , en la tabla de libro, campo editorial, almacenaremos la clave de la tabla editoriales, para lo que crearemos una relación Padre-Hijo (Foreign key) y la base de datos misma se encargará de mantener la coherencia y de que no haya claves perdidas o referencias ciegas.
En este paso verás que no es posible, muchas veces, establecer una relación directa y sencilla, por ejemplo:
Un autor ha escrito varios libros. Un libro puede tener varios co-autores. La solución más sencilla entonces es la creación de una tabla de enlace intermedia. Una tabla que se componga exclusivamente de tres campos: índice de la relación, clave el autor, clave del libro.

Finalmente, una vez que tengas la estructura creada, es conveniente hacer una serie de vistas que simplifiquen las consultas más frecuentes que luego usaremos en el programa.
Por ejemplo: una vista que contenga todos los campos del libro y todos los de su autor (recordemos que en la tabla de libros sólo tenemos la clave de la tabla del autor).
Almacenando estas vista, seremos capaces de mostrar al usuario los datos que necesite de manera muy sencilla.

Hay mucho más, claro, pero más o menos estos son los pasos básicos para el diseño de una base de datos.
Todo el tiempo que dediques a esto, será tiempo ganado en la programación. Un error de programación se arregla, a las malas, en unas horas. Un error en el diseño de la base de datos puede costarte meses o, incluso, hacer inútil todo tu proyecto. (Créeme, me ha pasado)

El diseño de tu base de datos es la esencia de tu programa.

Mi cita favorita:
"Enséñame tu código y mantén ocultas tus estructuras de datos, y me seguirás engañando. Muéstrame tus estructuras de datos y normalmente no necesitaré que me enseñes tu código: resultará evidente." (Fred Books.)


Fuente:
http://www.gambas-es.org/viewtopic.php?f=3&t=4419

jueves, 5 de junio de 2014

Código de Ejemplo de: INSERTAR, EDITAR, BORRAR Y BUSCAR en una base de datos


Un ejemplo completo de insertar, editar, borrar y buscar en una base de datos


En el curso de gambas3 (que es de acceso gratuito) añadí bastantes ejemplos para explicar los diversos controles, funciones, etc usando gambas3.  Uno de los ejemplos que creo que es más útil es este, donde hacemos lo básico con una base de datos: añadir, editar, borrar y buscar registros, y todo ello de modo visual, usando formularios, menús y botones. En este caso usaba SQLite3

Puede ser de mucha utilidad para los que deseen desarrollar aplicaciones en modo visual, para sus bases de datos y deseen conocer como hacerlo con gambas3.

Si no se sabe nada de programación, es muy recomendable que estudies el curso (que es de acceso gratuito) y no empecéis con  bases de datos antes de conocer  el lenguaje. En fin, lo que siempre se dice: no se empieza la casa por el tejado.

A continuación el programa:

En este este programa vamos a poder insertar, editar, borrar y realizar busquedas en una base de datos llamada "DatosEjemplos",  que tiene una tabla llamada "Personas".
Los campos de esta tabla son: nombre, apellidos, edad y la fecha de nacimiento

La estructura del proyecto es la siguiente:


Código fuente:
Modulo ModComun:
-

-

Módulo fuente:
FormMostrarResultados
-

-

Módulo fuente:
Fmain:
-

-

Ejemplo de la aplicación funcionando:

Varias cosas a comentar:
1) El propio programa tiene la base de datos internamente, que la copia al directorio  User.home &/ ".ejemploBD"  si no la encuentra en el disco duro.
2) Si pulsáis  el botón derecho del ratón en alguna fila del ColumView, tendréis acceso al menú popup :"Editar/Borrar/Filtrar/Quitar Filtro"

3) Se han usado los métodos de la clase connection para editar, insert, borrar y filtrar información. También se podía haber echo con sentencias SQL y usando el método .Exec()

4) El esquema de la tabla Personas:
El campo Id es una llave primaria integer, la cual se autoenumera cuando le damos valor Null.

5) Las fechas se guardan internamente en la base de datos en el formato mes/dia/año, por eso para mostrarlas en el columnview uso el formateo  "dd/mm/yyyy".
Para mostrarla en el formulario Fmain (añade o edita registros), al usar un DateBox, automáticamente se formatea correctamente.

enlace de descarga: archivo alojado en Box.com

Documentación Oficial:





Fuentehttp://cursogambas.blogspot.com.es/2013/07/conexiones-y-resultados.html

jueves, 12 de septiembre de 2013

Mi primer triggers en Sqlite: un ejemplo

 Mi primer triggers en Sqlite: 
un ejemplo de borrado en cascada
¿que es un trigger o disparador? 
Un trigger (o disparador) en una Base de datos, es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Dependiendo de la base de datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos. (fuente: http://es.wikipedia.org/wiki/Trigger_(base_de_datos))
Bueno, una vez explicado que es, os voy a hacer un ejemplo de "borrado en cascada", osea que cuando se haya borrado un registro de una tabla, se borre también los registros que estén relacionados de otra tabla.

El ejemplo:
Se trata de dos tablas "alumno" y "asignatura", las cuales contienen los datos de los alumnos (nombre) y las asignaturas y notas que tienen esos alumnos.

El caso es que queremos que cuando se borre un alumno, de la tabla "alumno", automáticamente, se borren las asignaturas y las notas que tenia dicho alumno en la tabla "asignatura" . La relación entre las tablas es que un alumno puede tener una o varias asignaturas. A continuación el esquema.

Esquema:


Solución con triggers o disparador:
CREATE TRIGGER borradoAlumnosBEFORE DELETE ON alumno
FOR EACH ROW BEGIN
    DELETE FROM asignatura WHERE asignatura.idalumno = OLD.idalumno;
END;

¿que hace?
1) Se crea un trigger llamado "borradoAlumnos"
2) Despues de borrar un alumno, se ejecuta por cada registro (fila = row) de la tabla "asignatura", la instrucción:
    DELETE FROM asignatura WHERE asignatura.idalumno = OLD.idalumno;
Osea que cada registro de la tabla "asignatura" que tenga el mismo idalumno del alumno borrado (OLD.idalumno), también se va a borrar.

3) Este trigger se ejecuta automáticamente (como si se disparara, por eso del nombre "triggers"), siempre que se produzca el evento de borrado de un alumno.

Para ver más ejemplos y como se pueden crear , visita esta página:
Generador automático de Triggers
http://www.rcs-comp.com/site/index.php/view/Utilities-SQLite_foreign_key_trigger_generator

Saludos


martes, 6 de agosto de 2013

Diseñador de Bases de Datos Online: DBDSGNR

Diseñador de Bases de Datos Online: DBDSGNR


Necesitaba realizar un esquema de una base de datos, y como no podía instalar ningún programa en el ordenador del trabajo, se me ocurrió buscar alguna herramienta "online" , que pudiera trabajar con ella y exportar luego el esquema de la base de datos  y poderlo reutilizar.

Y en la página web http://www.xtro.es/2011/01/13/diseador-de-bases-de-datos-online/ encontré esta herramienta: dbdsgnr
¿Necesitas diseñar una Base de Datos y no dispones de una herramienta para hacerlo? Toma nota de esta dirección: dbdsgnr.appspot.com.
Cuadro de Diálogo: Acerca de...

 Simplemente accede utilizando tu cuenta de Google y diseña la Base de Datos para PostgreSQL, SQLite, MySQ, MSSql y Oracle.
La aplicación te permite diseñar tablas, establecer claves primarias y realizar relaciones entre tablas y campos. Una vez finalizado el trabajo, puedes obtener el código necesario para ejecutarlo en el motor de Base de Datos correspondiente.

He estado "trasteándola" un poco, y me parece muy interesante, te permite fácilmente crear las tablas, añadir y  editar los campos, añadir notas (para comentar detalles), permite conectar y mostrar las relaciones entre los campos de distintas tablas (nota: al menos uno de los campos debe de ser del tipo "Foreign key"), y luego con la opción "Export" te generá el código SQL para crear las tablas. Aquí os dejo un pantallazo:

Además, tiene la posibilidad de compartir tu esquema con otros usuarios, usando la opción "Share/Permalink", que te crea una dirección url de enlace.

Otro detalle a destacar, en la opción de "Schema/Load/Templates", es que tiene muchas plantillas  realizadas por otros usuarios:



Espero que os sea útil, saludos.