Base de Datos
Una base de datos es la organización de datos del mismo contexto, de una forma estructurada. La principal función es obtener, poder añadir y modificar estos datos de una forma sencilla. Podríamos decir que una biblioteca puede considerarse una base de datos, donde podemos encontrar documentos y textos impresos en papel e indexados para su consulta.
Aquí realmente vamos a hablar de bases de datos en formato digital. Veremos varios sistemas de gestión de bases de datos relacionadas (principalmente como lenguaje SQL), sistemas de bases datos relacionadas pero no estructuradas (NO-SQL), o aquellos sistemas de bases de datos Orientados a objetos.
Software que trataremos es Mysql, SQLite, PostgreSQL y otros similares.
Herramientas como PhpMyadmin, MySQL Workbench, Adminer ...
Como programador autodidacta, reconozco que hay aspectos en los que puedo mejorar. Uno de ellos es el diseño de las bases de datos. Siempre me hablaron de la importancia de relacionar las tablas utilizando claves foráneas (FOREIGN KEY) para imponer restricciones y garantizar la integridad de los datos. Sin embargo, siempre descarté esta práctica, prefiriendo gestionar las relaciones directamente en el código de mis aplicaciones.
Con el tiempo, me di cuenta de que esta no era la mejor práctica. Al no definir relaciones explícitas en la base de datos, las aplicaciones externas, como Power BI o Metada, tenían dificultades para comprender la estructura de la base de datos. Esto dificultaba su reutilización y análisis, ya que carecían de la información necesaria sobre cómo las tablas estaban relacionadas entre sí.
Otra cosa que también descubrí fue la importancia de comentar los campos de la base de datos. A menudo, los nombres de los campos pueden no ser lo suficientemente descriptivos por sí mismos, lo que puede dificultar la comprensión de su propósito. Al comentar los campos con información adicional, facilitamos la auditoría de la base de datos y evitamos confusiones innecesarias.
Es por eso que en esta guía, exploraremos cómo diseñar una base de datos MySQL de manera coherente y consistente, utilizando claves foráneas para establecer relaciones y mejorar la comprensión y el análisis de nuestros datos en diversas aplicaciones.
Importar mdb desde consola con mdb-export
Lo primero tendenemos que tener instalado mdbtools en nuestro sistema.
Para instalar en debian:
sudo apt-get -y install mdbtools
A continuación ponemos un fichero que tenemos crear bash para poder hacer exportacion de una forma sencilla.
#!/bin/bash
echo "Esquema"
mdb-tables $1.mdb all > $1.tablas
mdb-schema $1.mdb > $1.schema.sql
echo "Tablas"
echo "==========================="
arr=( $(cat $1.tablas) )
# read -a arr
for elem in ${arr[@]}
do
# mdb-export -I mysql $1.mdb $elem > $elem.sql #tablas individuales
mdb-export -I mysql $1.mdb $elem >> $1.data.sql # todas las tablas juntas
done
Para un "archivo.mdb" se exportan sus tablas.
se ejecuta con:
bash tablas.sh archivo
Siendo "archivo" el fichero mdb que quieres exportar, sin la extensión, para mySQL hay que hacer unos cambios básicos de tipos "Long Integer" por "bigint" y cosas así, pero lo gordo está hecho.
Muchas gracias por aporte Alberto Lago. :-)
Herramienta para trabajar con Bases de datos (MySQL o MariaDB)
Alguna de la siguiente herramientas que utilizamos cuando trabajamos con bases de datos de mysql o MariaDB.
Herramientas con las que podrás copiar, hacer migraciones de versiones, ver diferencias estructuras y incluso llenar con script automatizados.
Mysql - Recuperar respaldos de base de datos de mysql o maria-db
El programa que utiliza para hacer copias de seguridad es mysqldump es un programa que forma parte de los "MySQL Client Programs" de MySQL, que puede ser utilizado para generar respaldos de bases de datos y ser usados o incluso para ser transferidos a otro servidor de base datos SQL .
Para poder importar la base datos comprimida (xz) lo hacemos desde terminal con la siguiente instrucción.
mysql -u usuario -p base_datos < <(xz -cd < copia_de_base_datos_comprimida.dump.xz)
Realizando el proyecto catalogos, necesito poder crear una consulta donde me cambie el valor de una columna en unas determinadas filas.
Lo que tengo montado hasta ahora es un array con las consultas.
$consulta[$i] = 'UPDATE referenciascruzadas SET Estado ="'.$Estado.'" WHERE RecambioID ='.$Encontrado['RecambioID'].' AND IdFabricaCruzado ='.$Encontrado['IdFabricaCruzado'].' AND Ref_Fabricante ="'.$Encontrado['Ref_Fabricante'].'"';
Pero esto implica que si tengo un array con 200 elementos, implica que haga 200 peticiones al servidor msqyl, algo que considero que es innecesario, ya que no necesito saber si fue correcta o no la actualización.
Bueno el código completo es el siguiente
foreach ( $ArrayEncontrados as $Encontrado) { $i++; if ($Encontrado['Buscado'] =='NoEncontrado') { $Estado = 'Nuevo'; } else { $Estado = 'Existe Referencia Cruzada'; } $consulta[$i] = 'UPDATE referenciascruzadas SET Estado ="'.$Estado.'" WHERE RecambioID ='.$Encontrado['RecambioID'].' AND IdFabricaCruzado ='.$Encontrado['IdFabricaCruzado'].' AND Ref_Fabricante ="'.$Encontrado['Ref_Fabricante'].'"'; }
Lee más…