Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editor...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
Hace unos años realicé una base de datos sobre películas que tenía grabadas. Estaba realizado en gambas (visual Basic para Linux), y utilizaba SQLite para manejar los datos.
Buscando por internet encontré una base de datos de libros, estaba realizada para access microsoft. Era del programa abies 2 que se utilizaba para una gestión de  bibliotecas escolares.
La página del proyecto es http://www.abies.es/web/ , ahora el proyecto se basa en web, por lo que faltan en mi base de datos muchos libros desde hace 10 años hasta ahora.
Me puse manos a la obra y la base de datos en formato mdb la pase a formato sqlite.
La base de datos cuenta con  388.000 libros, 200.000 autores, y 50.000 editoriales.
Por lo que podéis ver es bastante grande, era una experiencia nueva trabajar con tanta cantidad de libros, por lo que lo tome como un reto.


Link
VIDEO

http://seta43.blogspot.com/2018/08/...libros-con.htmlhttp:
 



 
última edición por seta43 el Miercoles, 01 Agosto 2018, 11:05; editado 1 vez 
seta43 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
Buen trabajo para ser un primer proyecto. Funciona fluida en mi máquina y es un ejemplo de la potencia de Sqlite.

Si admites algunas sugerencias, te dejo algunas.

El programa es sólo de consulta, entonces... ¿Por qué usar controles de edición? cada vez que ves un libro, puedes teclear en los campos, aunque luego lo que tecleas no se grabe en ningún sitio... Utiliza sólo etiquetas (textLabel te permite formatear el texto a tu gusto)


Utilizas la propiedad .center para mostrar los formularios en el centro... pero es bastante molesto cuando se tienen varios monitores. Te aconsejo que añadas el componente gb.settings y utilices los métodos
settings.read y settings.write. Con ello la aplicación recuerda la última posición y tamaño en que se abrieron los formularios.

Hay más cositas, pero ya te digo, buen trabajo.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
Me ha parecido una presentación estupenda.
Lo miro esta tarde y te comento en cuanto a usabilidad.
Para mí sería utilísimo porque empleo un montón este tipo de base de datos.
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
Felicitaciones, un trabajo muy útil.
Realice una busqueda por el autor "saramago" y aparecen dos entradas iguales pero solo funciona el filtro si elijo una de ellas ya que si elijo la que no funciona se bloquea un momento el programa.

Si te viene bien te dejo algunas sugerencias sobre la base de datos.
Como norma general, el uso de claves foráneas mejora notablemente el rendimiento de la base de datos.
Tabla Autores
El campo "TipoAutor" no es "AUTOINCREMENT", tiene mayúsculas y minúsculas en el nombre y repite entradas.
Tabla EDITORIALES
El campo clave "EDITORIAL" es "TEXT" en vez de ser integer.
El campo "EDITORIAL" no es "UNIQUE"
Tabla Fondos
El campo idFondo no es "AUTOINCREMENT"
Hay varios campos id.... que son "TEXT" y deberian ser integer.

Para hacer mas optimo el trabajo aplicaría los comentarios antes mencionados y agregaría unas vistas.

Muchas gracias por compartir tu programa.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
Pues me ha parecido genial. Aparte de los comentarios de los compañeros más expertos, el funcionamiento del ejecutable es adecuado. Con el código fuente no he podido hacerlo funcionar, seguro que por mi torpeza inherente. Me sale un error de conexión con la base de datos. Intentaré explorarlo despacio.
Enhorabuena.
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
Grandamakulo wrote: [View Post]
Pues me ha parecido genial. Aparte de los comentarios de los compañeros más expertos, el funcionamiento del ejecutable es adecuado. Con el código fuente no he podido hacerlo funcionar, seguro que por mi torpeza inherente. Me sale un error de conexión con la base de datos. Intentaré explorarlo despacio.
Enhorabuena.

Para hacerlo funcionar con el código fuente tenes que usar el archivo .sqlite que viene con el zip del programa.gambas y colocarlo en la raiz del proyecto gambas.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
tincho escribió:  
Felicitaciones, un trabajo muy útil.
Realice una busqueda por el autor "saramago" y aparecen dos entradas iguales pero solo funciona el filtro si elijo una de ellas ya que si elijo la que no funciona se bloquea un momento el programa.

Si te viene bien te dejo algunas sugerencias sobre la base de datos.
Como norma general, el uso de claves foráneas mejora notablemente el rendimiento de la base de datos.
Tabla Autores
El campo "TipoAutor" no es "AUTOINCREMENT", tiene mayúsculas y minúsculas en el nombre y repite entradas.
Tabla EDITORIALES
El campo clave "EDITORIAL" es "TEXT" en vez de ser integer.
El campo "EDITORIAL" no es "UNIQUE"
Tabla Fondos
El campo idFondo no es "AUTOINCREMENT"
Hay varios campos id.... que son "TEXT" y deberian ser integer.

Para hacer mas optimo el trabajo aplicaría los comentarios antes mencionados y agregaría unas vistas.

Muchas gracias por compartir tu programa.

Saludos.

Respecto a la BD todo lo que dices es correcto... si fuese una BD "normal", con actualizaciones, adiciones y demás, pero al ser una BD "estática" y, tal como maneja los datos (Suele cargar todas las tablas en memoria, utiliza búsquedas aproximadas y ambiguas con LIKE, etc. etc.) no creo fuesen significativos tales cambios.
Por eso le he remarcado que está muy bien para ser un primer proyecto.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
tincho escribió: [Ver mensaje]

Para hacerlo funcionar con el código fuente tenes que usar el archivo .sqlite que viene con el zip del programa.gambas y colocarlo en la raiz del proyecto gambas.
Saludos.


¡Gracias, Tincho!
 



 
última edición por Grandamakulo el Miercoles, 01 Agosto 2018, 21:02; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 

Puff eso lo queria saber hacer yo me haria uno para podcasts de Histocast y esas cosas + mis libros que tengo a montones pero no organizados.

 
Idea para no hacer pero para pensar que se me ocurre
Es posible conectar el gambas a ivoox directamente a histocast y que busque alla los programas? Se puede hacer con agun componente en un programa nuevo?
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Base De Datos De Libros. 388.000 Libros, 200.000 Autores, Y 50.000 Editoriales. 
 
Hola a todos.

Gracias por vuestros comentarios.

En cuanto a la búsqueda de "saramago" es bastante normal, como ejemplo con "perez reverte" hay como 5 códigos diferentes para el mismo autor, hay no puedo hacer nada, es como está la base de datos.
Si eliges un autor que no tiene libros, al volver se a cargar toda la base de datos. Es lo que cuento en el artículo:
Cuando se emplea la orden TablaFondos = Conexion.Exec("Select * from Fondos") tarda unos 5 segundos en actualizar la base de datos. Ya sé que es grande pero he visto en otros programas que lo hacen mas rápido.

Tenéis razón que debería hacer todos los campos no editables debido a que es solo de consulta, fallo mio.
Normalmente utilizo alineación a la izquierda, pero hay campos que se ven mejor en el centro.
Tendré en cuenta lo de settings.read y settings.write, no lo sabía.

Lo de  claves foráneas, no lo entiendo muy bien, soy bastante novato.

No entiendo lo de:

Tabla Autores
El campo "TipoAutor" no es "AUTOINCREMENT", tiene mayúsculas y minúsculas en el nombre y repite entradas.
Tabla EDITORIALES
El campo clave "EDITORIAL" es "TEXT" en vez de ser integer.
El campo "EDITORIAL" no es "UNIQUE"
Tabla Fondos
El campo idFondo no es "AUTOINCREMENT"
Hay varios campos id.... que son "TEXT" y deberian ser integer.


La estructura es la siguiente:
CREATE TABLE "Autores" ("IdAutor" INTEGER PRIMARY KEY  NOT NULL  UNIQUE , "TipoAutor" , "autor" , "extra" )
CREATE TABLE "Editoriales" ("IDEDITORIAL"  PRIMARY KEY  NOT NULL  UNIQUE , "EDITORIAL" )
CREATE TABLE "Fondos" ("IdFondo" INTEGER PRIMARY KEY  NOT NULL  UNIQUE , "IdTipoFondo" , "CodigoExterno" , "CodigoLocal" , "Transaccion" , "IntroInfo" , "Fecha1Info" , "Fecha2Info" , "IdPaisInfo" , "IdLenguaInfo" , "DepositoLegal" , "IdAutor" , "Titulo" , "Subtitulo" , "RestoPortada" , "Edicion" , "LugarEdicion" , "IdEditorial" , "AnoEdicion" , "Extension" , "CaracteristicasFisicas" , "Dimensiones" , "MaterialAnejo" , "Serie" , "NumeroSerie" , "Notas" , "ISBN" , "ISBN2" , "Lote" )

Igual me pierdo en algo, pero no se, soy aprendiz en esto.

Como otro de mis lenguajes favoritos es C o C++ he realizado el programa con la librería wxwidgets, es muy parecido o igual al realizado en gambas. http://seta43.hol.es/wxlibro.html
Posteriormente añadí lector de código de barras.
Lo bueno que tiene en realizarlo con wxwidgets, es que se puede compilar para Windows y linux sin un solo cambio de código.
Como he observado la orden "Select * from Fondos"  , es bastante mas rápida que con Gambas.
Si gambas tuviera  una versión nativa en Windows sería perfecto.

Gracias por vuestros comentarios.
JUAN
 



 
seta43 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
10.00 10 10 1
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes [Python] Libros Recomendados Shell Programación en otros lenguajes 0 Viernes, 27 Septiembre 2013, 14:33 Ver último mensaje
Shell
No hay nuevos mensajes [Python]Estantería Para Libros De Inventa... Shell Python 3 Miercoles, 07 Diciembre 2016, 21:04 Ver último mensaje
tincho
No hay nuevos mensajes Otro Sitio De Libros De Programación. tincho General 2 Lunes, 12 Junio 2017, 00:38 Ver último mensaje
tincho
No hay nuevos mensajes [Python] Código Fuente De Los Libros Para... Shell Python 1 Lunes, 02 Abril 2018, 13:43 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario