martes, 24 de abril de 2018

Librerías para manejar bases de datos en Python


Siguiendo con el Python, he estado probando como funciona la conexión con bases de datos.


Para poder conectar el Python con el servidor MySQL nos hace falta instalar la librería que hará de intermediario entre el MySQL y Python, por la red hay varias, pero me he decantado por la propia que distribuye Oracle. Elegimos el fichero para nuestro sistema y lo instalamos. Para Ubuntu / Debian podemos bajar el ficheros de la pagina o instalarlo a través del repositorio de Ubuntu, con el siguiente comando.
sudo apt-get install python-mysql.connector
Instalada la librería ya solo queda programar el código en Python, para ello importamos la librería.
import mysql.connector
Crearemos un variable que sera la encargada de manejar la conexión con el servidor de MySQL. Esto se puede hacer de dos maneras, poniendo toda los datos de la conexión en la función, o utilizar cuna variable con los datos como intermediaria.
1º Forma
conexion_mysql = mysql.connector.connect(user='usuario', password='contraseña', host='DireccionServidor', database='BaseDeDatos')
2º Forma, para decirle a la función que los datos están dentro de la variable hay que poner “**” (2 asteriscos) delante de la variable.
# Variable con la configuracion de la conexion
config_mysql = {
    'user': 'usuario',
    'password': 'contraseña',
    'host': 'DireccionServidor',
    'database': 'BaseDeDatos',
}

# conectamos al servidor MySql
conexion_mysql = mysql.connector.connect(**config_mysql)
Si esto no ha producido ningún error, ya estaremos conectados al servidor de MySQL. Ahora solo nos queda empezar ha trastear con las tablas. Para ello tendremos que crear otra variable que se encargara de realizar las consultas SQL y contendrá la información para esa consulta.
cursor = conexion_mysql.cursor()
Una vez creada esta variable, solo nos queda pasarle la sentencia de SQL que queramos ejecutar.
cursor.execute("SELECT Campo1, Campo2, Campo3 FROM Tabla1")
Ahora ya tenemos la información en la variable, y podremos hacer con ella lo que nos de la gana, para mostrar todos los datos de la consulta, por ejemplo, solo tendríamos que hacer lo siguiente:
for (Campo1, Campo2, Campo3) in cursor:
    print("Campo1: " + Campo1 + ", Campo2: " + Campo2 + ", Campo3: " + Campo3)
Una vez que ya hemos obtenido la información deseada, solo nos queda cerrar las conexiones, tanto de la variable que se encarga de procesar las consultas de SQL, como la encargada de la conexión con el servidor.
# Cerramos la variable encargada de las consultas
cursor.close()

# Cerramos la conexión
conexion_mysql.close()
Y con esto ya valdría para conectarnos ha una base de datos en MySQL y consultar la información de una tabla.

Código completo del ejemplo.
#! /usr/bin/env python

# Importamos el conector de MySQL
import mysql.connector

# Variable con la configuracion de la conexion
config_mysql = {
    'user': 'usuario',
    'password': 'pass',
    'host': 'localhost',
    'database': 'prueba',
}

# conectamos al servidor MySql
conector = mysql.connector.connect(**config_mysql)

# cursor, clase para el manejo del SQL ???
cursor = conector.cursor()

# Creamos la consulta SQL
query = ("SELECT Nombre, Telefono FROM prueba")

# Ejecutamos la consula SQL
cursor.execute(query)

# Mostramos todos los datos de la consulta
for (Nombre, Telefono) in cursor:
    print("Nombre: " + Nombre + ", Telefono: " + Telefono)

# Cerramos cursor
cursor.close()

# Cerramos la conexion
conector.close()

Que es y para qué sirve el PIP en python

PIP.


Al igual que con cualquier lenguaje de programación serio, Python admite bibliotecas y marcos de terceros que puede instalar para evitar tener que reinventar la rueda con cada nuevo proyecto. Puede encontrarlos en un repositorio central llamado "PyPI" (Python Package Index).


¿Qué es PIP para Python?
PIP es un acrónimo que significa "Paquetes de instalación PIP" o "Programa de instalación preferida". Es una utilidad de línea de comandos que le permite instalar, reinstalar o desinstalar paquetes PyPI con un comando simple y directo: "pip".

Si alguna vez ha realizado algún trabajo de línea de comandos en Windows (con el símbolo del sistema) o Mac o Linux (con el Terminal y Bash), entonces te sentirás como en casa y puedes ir directamente a las instrucciones de instalación para su particular sistema operativo.

¿Se instala PIP con Python?

Si está utilizando Python 2.7.9 (o superior) o Python 3.4 (o superior), entonces PIP viene instalado con Python por defecto. Si está utilizando una versión anterior de Python, deberá seguir los pasos de instalación que se detallan a continuación. De lo contrario, salte a la parte inferior para aprender cómo comenzar a usar PIP.

Si está ejecutando Python en un entorno virtual creado con virtualenv o pyvenv, entonces PIP estará disponible para ese entorno independientemente de la versión de Python.

Antes de instalar PIP para Python:

Debe asegurarse de que Python esté instalado correctamente en su sistema. En Windows, abra el símbolo del sistema con la tecla de Windows + X y seleccione Símbolo del sistema. En Mac, abre la Terminal usando Comando + Espacio y busca la terminal. En Linux, abra la Terminal usando Ctrl + Alt + T o como sea que haya sido hecho en su distribución particular.

Luego escribe:


python --version

En Linux, los usuarios de Python 3.x pueden necesitar usar el siguiente comando:


python3 --version

Si obtiene un número de versión (por ejemplo, "Python 2.7.5"), significa que Python está listo para funcionar.

Si aparece el mensaje "Python is not defined", primero deberá instalar Python correctamente.


Cómo instalar PIP en Windows:

Las siguientes instrucciones deberían funcionar en Windows 7, Windows 8.1 y Windows 10:


1.-Descargue el script del instalador get-pip.py. Si estás en Python 3.2, necesitarás esta versión de get-pip.py. De cualquier manera, haga clic derecho en el enlace y seleccione Guardar como y guárdelo en cualquier carpeta del pc, como su carpeta de Descargas.


2.-Abra el símbolo del sistema y navegue hasta el archivo get-pip.py.


3.-Ejecute el siguiente comando: python get-pip.py

martes, 13 de marzo de 2018

Estructura de la SGA.

Oracle utiliza la memoria para almacenar la siguiente información:

*Código del programa
*Información acerca de una sesión conectada, incluso si no se encuentra activa.
*Información necesaria durante la ejecución del programa(por ejemplo, el estado de las consultas)
*La información que comparten y con la cual se comunican los procesos Oracle (por ejemplo, la información de bloqueo)
*La Caché de Datos

 La memoria se puede estructurar en las siguientes partes:

*Área Global del sistema (SGA), la cual se comparte entre todos los servidores y los procesos en segundo plano.
*Áreas globales de programas (PGA), que es privada para cada servidor y proceso en segundo planos; a cada proceso se asigna un PGA.
*Área de Ordenaciones (Sort Areas).
*Memoria Virtual
*Área de código de Software (SCA).


                                        




SGA de Base de datos:




SGA (Área Global del Sistema) es una estructura básica de memoria de Oracle que sirve para facilitar la transferencia de información entre usuarios y también almacena la información estructural de la BD más frecuentemente requerida.


El área global del sistema y un conjunto de procesos de la base de datos constituyen una instancia de una base de datos Oracle. La base de datos Oracle automáticamente reserva memoria para el área global del sistema cuando se inicia una instancia, y el sistema operativo reclama la memoria cuando se apaga dicha instancia. Cada instancia tiene su propia SGA.



su composicion es:


Buffer Redo Log:


Los registros Redo describen los cámbios realizados en la BD y son escritos en los ficheros redo log para que puedan ser utilizados en las operaciones de recuperación hacia adelante, roll-forward, durante las recuperaciones de la BD.


Database Buffer Cache (Buffers de BD):


Es el caché que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales como tablas, índices y clusters. Los bloques modificados se llamas bloques sucios. El tamaño de buffer caché se fija por el parámetro DB_BLOCK_BUFFERS.


Shared SQL Pool (Área de SQL Compartido, ):


En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. 



Arquitectura de un manejador de bases de datos (DBMS).



Memoria:
  • Shared Global Area (SGA): es el área más grande de memoria y quizás el más importante
    • Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL
    • Redo Log Buffer: contiene un registro de todas las transacciones dentro de la base, las cuales se almacenan en el respectivo archivo de Redo y en caso de siniestro se vuelven a ejecutar aquellos cambios que aún no se hayan reflejado en el archivo de datos (commit).
    • Large Pool: espacio adicional, generalmente usado en casos de multithreading y esclavos de I/O.
  • Procesos:
    • Threading
    • System Monitor: despierta periódicamente y realiza algunas actividades entre las que se encuentran la recuperación de errores, recuperación de espacio libre en tablespaces y en segmentos temporales.
    • Process Monitor: limpia aquellos procesos que el usuario termina de manera anormal, verificando consistencias, liberación de recursos, bloqueos.
    • Database Writer: escribe bloques de datos modificados del buffer al disco, aquellas transacciones que llegan a un estado de commit.
    • Log Writer: escribe todo lo que se encuentra en el redo log buffer hacia el redo file


Archivos:
  • Control (ctl): almacenan información acerca de la estructura de archivos de la base.
  • Rollback (rbs): cuando se modifica el valor de alguna tupla en una transacción, los valores nuevos y anteriores se almacenan en un archivo, de modo que si ocurre algún error, se puede regresar (rollback) a un estado anterior.
  • Redo (rdo): bitácora de toda transacción, en muchos dbms incluye todo tipo de consulta incluyendo aquellas que no modifican los datos.
  • Datos (dbf): el tipo más común, almacena la información que es accesada en la base de datos.




Tipos de instancias de un DBMS.



Online Transaction Processing (OLTP): compra/venta, telemarketing
  • Segmentos cortos de rollback
  • Shared Pool muy largo
  • Redo log suficiente
  • Indices en discos separados
  • Segmentos temporales pequeños
Decision Support Systems (DSS): datawarehouse
  • Segmentos largos de rollback
  • Shared Pool relativamente corto
  • Redo log suficiente
  • Indices apropiados
  • Segmentos largos de temporal
  • Parallel Query en la medida de lo posible (si está disponible)

miércoles, 7 de marzo de 2018

componentes de un gestor de base de datos


Un SGBD está estructurado en diversos componentes software( o módulos), a cada uno de los cuales se les asigna una operación específica. Como hemos indicado anteriormente , algunas de las funciones del SGBD están soportadas por el sistema operativo subyacente . Sin embargo, el sistema operativo sólo proporciona servicios básicos y el SGBD debe diseñarse para funcionar encima suyo. Por tanto, el diseño de un SGBD debe tener en consideración la interfaz entre el SGBC y el sistema operativo.




Gestor de archivos:


Gestiona la asignación de espacio en la memoria del disco y de las estructuras de datos usadas para representar la información.

 Manejador de base de datos:



Sirve de interfaz entre los datos y los programas de aplicación.

Procesador de consultas:


Traduce las proposiciones en lenguajes de consulta a instrucciones de bajo nivel. Además convierte la solicitud del usuario en una forma más eficiente.

 Compilador de DDL:


Convierte las proposiciones DDL en un conjunto de tablas que contienen metadatos, estas se almacenan en el diccionario de datos.

 Archivo de datos:


En él se encuentran almacenados físicamente los datos de una organización.

 Diccionario de datos:


Contiene la información referente a la estructura de la base de datos.

 Índices:


Permiten un rápido acceso a registros que contienen valores específicos.

Control de autorización:


Este módulo comprueba que el usuario tiene los permisos necesarios para llevar a cabo la operación que solicita.


 Gestor de recuperación:

Este módulo garantiza que la base de datos permanece en un estado consistente en caso de que se produzca algún fallo.


 Gestor de transacciones:



Este módulo realiza el procesamiento de las transacciones.

miércoles, 28 de febrero de 2018

programa que imprime 5 veces


TURBO ASSAMBLE:


.model small
.stack 64
.data 
mensaje db 0Ah,  0dh,"letrero cinco veces", "$"
.code
inicio:
    mov cx,0005
ciclo:
    mov ax,@data
    mov ds,ax
    mov dx,offset mensaje
    mov ah,09h
  int 21h
  loop ciclo
 
  mov ah,04ch
  int 21h
  end inicio




EMU 8086:



.model small
.stack 64
.data 
mensaje db 0Ah,  0dh,"letrero cinco veces", "$"
.code
inicio:
    mov cx,0005
ciclo:
    mov ax,@data
    mov ds,ax
    mov dx,offset mensaje
    mov ah,09h
  int 21h
  loop ciclo
 
  mov ah,04ch
  int 21h
  end inicio






MENÚ DE OPCIONES EN TURBO ASSEMBLE.


MENÚ DE OPCIONES  EN TURBO ASSEMBLE.




pila segment stack 'stack'
db 100h dup (?)
pila ends
datos segment

    titulo db 13,10,'CAMBIAR FONDO DE PANTALLA',13,10,10,'Menu:',13,10,10,'$'
    mensaje db '1.-Pantalla Azul y letras Rosas',13,10,'2.-Pantalla Morada y Letras Amarillas ',13,10,'3.-Pantalla Aqua y Letras Celestes',13,10,'4.-Pantalla Roja y Letras Verdes',13,10,10,'Para salir, presione cualquier tecla...',13,10,'$'

datos ends
codigo segment ;segmento de codigo
assume cs:codigo, ss:pila, ds:datos

    inicio:
         mov ah,0
         mov al,3h
         int 10h
         mov ax,0600h
         mov bh,0fh
         mov cx,0000h
         mov dx,184Fh
         int 10h
         mov ah,02h
         mov bh,00
         mov dh,00
         mov dl,00
         int 10h

            mov ax,datos
            mov ds,ax
            lea dx,titulo
            mov ah,9h
            int 21h
            lea dx,mensaje
            mov ah,9h
            int 21h
             mov ah,08
             int 21h
             cmp al,49
             je llamarAzul
            cmp al,50
            je llamarMorado
            cmp al,51
            je llamarAqua
            cmp al,52
            je llamarRojo
            jmp fin

            fin:
            mov ax,4c00h
            int 21h
            llamarAzul:
            CALL AZULPROC
            llamarMorado:
            CALL MORADOPROC
            llamarAqua:
            CALL AQUAPROC
            llamarRojo:
            CALL ROJOPROC
           
           
            AZULPROC PROC NEAR
            mov ah,0
             mov al,3h
             int 10h
             mov ax,0600h
             mov bh,0fh
             mov cx,0000h
             mov dx,184Fh
             int 10h
             mov ah,02h
             mov bh,00
             mov dh,00
             mov dl,00
             int 10h
            mov ah,06h
            mov bh,1dh
            mov cx,0000h
            mov dx,184fh
            int 10h
            mov ax,4c00h
            int 21h
            RET
            AZULPROC ENDP

            MORADOPROC PROC NEAR
            mov ah,0
             mov al,3h
             int 10h
             mov ax,0600h
             mov bh,0fh
             mov cx,0000h
             mov dx,184Fh
             int 10h
             mov ah,02h
             mov bh,00
             mov dh,00
             mov dl,00
             int 10h
            mov ah,06h
            mov bh,5eh
            mov cx,0000h
            mov dx,184fh
            int 10h
            mov ax,4c00h
            int 21h
            RET
            MORADOPROC ENDP
           
            AQUAPROC PROC NEAR
            mov ah,0
             mov al,3h
             int 10h
             mov ax,0600h
             mov bh,0fh
             mov cx,0000h
             mov dx,184Fh
             int 10h
             mov ah,02h
             mov bh,00
             mov dh,00
             mov dl,00
             int 10h
            mov ah,06h
            mov bh,3bh
            mov cx,0000h
            mov dx,184fh
            int 10h
            mov ax,4c00h
            int 21h
            RET
            AQUAPROC ENDP
           
            ROJOPROC PROC NEAR
             mov ah,0
             mov al,3h
             int 10h
             mov ax,0600h
             mov bh,0fh
             mov cx,0000h
             mov dx,184Fh
             int 10h
             mov ah,02h
             mov bh,00
             mov dh,00
             mov dl,00
             int 10h
            mov ah,06h
            mov bh,4ah
            mov cx,0000h
            mov dx,184fh
            int 10h
            mov ax,4c00h
            int 21h
            RET
            ROJOPROC ENDP
            codigo ends
             end inicio





miércoles, 7 de febrero de 2018

manejador de base de datos XAMPP

QUE ES XAMPP?.


XAMPP es un servidor independiente de plataforma de código libre. Te permite instalar de forma sencilla Apache en tu propio ordenador, sin importar tu sistema operativo (Linux, Windows, MAC o Solaris). Y lo mejor de todo es que su uso es gratuito.
XAMPP incluye además servidores de bases de datos como MySQL ySQLite con sus respectivos gestores phpMyAdmin y phpSQLiteAdmin. Incorpora también el intérprete de PHP, el intérprete de Perl, servidores de FTP como ProFTPD ó FileZilla FTP Serve, etc. entre muchas cosas más.


Si alguna vez has intentado instalar Apache, sabes que no es una tarea fácil, sin embargo con XAMPP todo es diferente. Una de las ventajas de usar XAMPP es que su instalación es de lo mas sencilla, basta descargarlo, extraerlo y comenzar a usarlo.


después de la creación creamos una pequeña base de datos:
















administración de base de datos

Unidad 1.- Perspectiva practica de la administración de bases de datos.



1.1.1 Funciones de un DBA

Los DBA realizan pruebas de rendimiento, pruebas de impacto, pruebas funcionales, pruebas de código, pruebas de carga de datos, pruebas de implementación y pruebas de integración en proyectos Investigación, desarrollo e innovación. Para la ejecución de pruebas es necesario aplicar las metodologías basadas en Ingeniería del software, sus aplicaciones funcionales y los requerimientos de calidad, añadiendo las líneas base de la ingeniería requerimientos en la inteligencia de negocios y las tecnologías de la información. Algunas de las actividades más relevantes de un DBA son:



Ø Analistas de datos.

Ø Analistas de sistemas.

Ø Analistas de programación.

Ø Administradores de bases de datos.

Ø Consultores de sistemas.

Ø Consultores de tecnologías de la información.

Ø Consultores de aplicaciones.

Ø Consultores de programación.

Ø Programadores de bases de datos.

Ø Programadores de procesos de negocio.

Ø Integradores de datos.

Ø Ingenieros de datos.

Ø Ingenieros estadísticos.

Ø Jefes de centros de datos.

Ø Coordinadores de área









les dejo los enlaces de dos vídeos en donde se explica lo anterior a detalle:


Vídeo  1: 

Vídeo  2:




1.1.2 Relación del DBA con otras áreas de la Sistemas.


En sistemas muy complejos cliente/servidor y de tres capas, la base de datos es sólo uno de los elementos que determinan la experiencia de los usuarios en línea y los programas desatendidos. El rendimiento es una de las mayores motivaciones de los DBA para coordinarse con los especialistas de otras áreas del sistema fuera de las líneas burocráticas tradicionales. Uno de los deberes menos respetados por el administrador de base de datos es el desarrollo y soporte a pruebas, mientras que algunos otros encargados lo consideran como la responsabilidad más importante de un DBA. Las actividades de soporte incluyen la colecta de datos de producción para llevar a cabo pruebas con ellos; consultar a los programadores respecto al desempeño; y hacer cambios a los diseños de tablas de manera que se puedan proporcionar nuevos tipos de almacenamientos para las funciones de los programas.






1.2 ANÁLISIS DE LOS MANEJADORES PARA UNA BASE DE DATOS:


Tabla:

Resultado de imagen para manejadores de base de datos



programa que utilizo para  las pruebas de uso es:

 MYSQL WORKBENCH.


*Como descargarlo:

DESCARGAR MYSQL WORKBENCH 6.3

La descarga la debes hacer del siguiente enlace  MySQL Workbench 6.3.
instalar mysql
Descargas el instalador como se ve en la imagen:
instalar mysql
Al igual que la descarga de MySQL lo vas hacer dando en la opción No thanks, just start my download que está al final.

INSTALAR MYSQL WORKBENCH 6.3

Al igual que la instalación de MySQL, es sumamente sencilla y empieza por la siguiente imagen, en total son 5 pasos y que los voy ha omitir en vista que no son más que dar simples Next.
instalar mysql
Nota: En algunas instalaciones suele saltar un error ya que la instalación requiere Visual C++ 2013, te mostrará una imagen como la siguiente:
error visual c++ 2013
Para solucionar este error debes descargar e instalar Visual C++ desde el siguiente enlaceDescarga de Visual C++ 2013.

OPCIONES BÁSICAS EN MYSQL WORKBENCH

Una vez que has instalado MySQL Workbench debes abrir la aplicación, lo puedes hacer desde la lupa de Búsqueda de Windows, a continuación te muestro en bloques lo que más interesa de esta herramienta:
instalar mysql

BLOQUE 1

Es la barra de herramientas entre lo más básico que puedes hacer desde algunas opciones es conectarte a una base de datos, crear nuevos scripts, crear nuevos modelos etc.

BLOQUE 2

Este bloque es una abreviación del principal ya que te permite crear tantas conexiones a MySQL como quieras, a través de estas conexiones podrás crear una base de datos, añadir tablas, crear scripts etc.

BLOQUE 3

Lo interesante de este bloque es que te permite crear modelos, es decir es una herramienta gráfica que te permite crear todas las tablas de tus base de datos con sus campos y relaciones que luego al exportar te genera todo el código SQL de ese modelo, y fácilmente podrás ejecutar ese código para crear las tablas en tu base de datos.icon

CREANDO UNA CONEXIÓN EN MYSQL WORKBENCH

Bien, hasta ahora hemos revisado algunas opciones muy básicas de MySQL Workbench, ahora vamos hacer una conexión con MySQL.
Como te indica la imagen debes seguir los pasos en secuencia, lo primero que debes hacer es ir al bloque MySQL Connections y añadir una nueva conexión en el icono (+), luego dar un nombre a la conexión que es el paso 2.
Hay tres campos que no vas cambiar, el primero es el Hostname, que es el que crea la instalación por defecto, además el campo Port también se queda como está, el campo Username, este campo lo puedes cambiar si quisieras conectarte con otro usuario, por último el campo Default Schema puedes poner a la base de datos que deseas conectarte, en este caso como es la primera conexión la dejas en blanco.
Debes hacer un test de la conexión para saber si esta todo bien, para esto también te pedirá la clave para el usuario que este caso es el usuario root.
instalar mysql
Finalmente si todo esta bien debe aparecer una imagen como la siguiente, caso contrario revisa si están llenos correctamente los campos de clave o usuario.
instalar mysql
Para finalizar le das click en OK (esta imagen se omite).

PROBANDO LA CONEXIÓN

Ahora es momento de probar la conexión creada para lo cual debes seguir las imágenes que se muestran a continuación, empieza desde el paso 8 puesto que se omitió el paso 7:
instalar mysql
Por motivos de seguridad te pedirá la contraseña nuevamente:
instalar mysql
Por último te mostrará la siguiente interfaz:
instalar mysql
Ahora estas conectado a MySQL y para explicar lo más esencial lo he dividido en bloques:

BLOQUE A

  1. Puedes abrir un script que tengas guardado.
  2. Te permite crear una nueva Base de datos.
  3. Puedes crear una nueva tabla y sus campos.
  4. Creas un procedimiento almacenado, la opción anterior y que no está numerada te permite crear una vista en la base de datos.
  5. Puedes crear una función.

BLOQUE B


  1. Puedes ver estado del servidor.
  2. Administras los clientes conectados al servidor de base de datos.
  3. Administras los usuarios y sus privilegios.
  4. Te permite exportar una base de datos.
  5. Te permite importa una base de datos.
  6. Levantas y bajas los servicios de la base de datos
  7. Puedes revisar el archivo log.
  8. Es un panel en el que visualizas en tiempo real el rendimiento y el tiempo que ocupa cada proceso, por ejemplo el número de conexiones y cuanto ocupa en memoria, algún script que se está ejecutando y que está consumiendo memoria del servidor.
  9. Te muestra todas las bases de datos que estén creadas en el servidor (Bloque C).
  10. Puedes escribir sentencias SQL para ejecutar en la base de datos (Bloque D).

trabajando con mysql workbench:

como crear una tabla:




verificar que la tabla se encuentre hecha:




y ya trabajando con las tablas:




APORTACIÓN DE DAVID MENDOZA:


Instalación:


Página de oficial www.firebirdsql.org

















Crear una base de datos

Buscar en el menú inicio de Windows: Firebird ISQL Tool



Instalación de un programa gráfico: DBeaver

Página oficial - dbeaver.jkiss.org































link del algoritmo de la burbuja