Está en la página 1de 9

SIMULADOR DE EJECUCIÓN DE TRES TRANSACCIONES

ENTREGA 1

MANJARRES PEREIRA JOSE CARLOS, COD. 1911022581


LAVERDE ALVARADO JOSE DAVID, COD. 100255476
CANTOR ANDREA CAROLINA, COD.1911022901
RINCON PALACIO JUAN CAMILO, COD. 1911028633
BUITRAGO PEÑA RICARDO ANDRÉS, COD. 1321979010

INSTITUCIÓN UNIVERSITARIA POLITÉCNICO GRANCOLOMBIANO


FACULTAD DE INGENIERÍA, DISEÑO E INNOVACIÓN
PERSISTENCIA Y DATOS TRANSACCIONALES
NOVIEMBRE 10 DE 2020- BOGOTÁ D.C
Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 2

SIMULADOR DE EJECUCIÓN DE TRES TRANSACCIONES

El banco XYZ requiere que se desarrolle un prototipo transaccional, para simular la ejecución de
tres transacciones a saber, una consulta, una consignación y un retiro. Para el desarrollo del
proyecto, se requiere:

• Hacer un modelo entidad relación sencillo del banco XYZ, con las entidades de saldo, cliente,
ciudad, país y movimientos (el propósito es académico).

• Implementar el modelo en una base de datos libre como Oracle 11g R2 Express, por ejemplo.

• Desarrollar los sockets server y cliente respectivos para hacer una consignación (insert), un retiro
(update) y una consulta (select).

• Probar las operaciones desde el socket cliente con el socket server iniciado

1. Elaborar el Modelo Entidad Relación de Persistencia en la base de datos para un cliente de un


Banco XYZ.
Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 3

2. Implantarlo en una base de datos Hsql, MySQL, PostgreSQL u Oracle-express-11g y


documentar el proceso.

Implementación de la base de datos en MySQL:

a. Crear la base de datos llamada db_banco_xyz

b. Se creó la tabla “país”:

c. Se creó la tabla cliente:

Se toma el atributo “país” como “foreign key” de la tabla “país”, atributo “id_pais.
Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 4

d. Se crea la tabla “ciudad”:

Se toma “id_pais” como “foreign key” de la tabla “país”, atributo “id_pais”.

e. Se crea la tabla “saldo”:

El “id_cliente” se toma como llave foránea de la tabla “cliente”, atributo “id_cliente”.


Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 5

f. Se crea la tabla “movimientos”:

Se toma como llaves foráneas “id_cliente”(Tabla:Cliente, Atributo:id_cliente,


id_ciudad”(Tabla:ciudad, Atributo:id_ciudad), “id_pais(Tabla:país, Atributo: id_pais)”

3. Agregar el estado del arte de la construcción de un socket.


En esta sencilla entrada veremos como realizar de forma sencilla una conexión cliente/servidor
utilizando el módulo Socket en Python, que no es más que un canal de comunicación que permite
conectar dos equipos a través de la red (normalmente cliente-servidor). La separación entre cliente
servidor en estas conexiones es de tipo lógico. Esto significa que no es necesario tener corriendo el
servidor en una única máquina, sino que puede estar en varias, e incluso en varios programas.

Socket es un módulo estándar del lenguaje de programación Python (y de otros muchos) que


proporciona una interfaz de bajo nivel que permite conexiones TCP/IP y UDP. Esto ofrece
soluciones sencillas a problemas sencillos. Si necesitamos trabajar con servidor, podremos usar el
módulo socketserver. Cabe destacar que cuando se abre la conexión cliente-servidor, las vías de
comunicación son bidireccionales por lo que ambas pueden emitir y recibir mensajes a través del
socket.
Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 6

Conexión de cliente a servidor con este cogido se puede establecer la conexión de cliente a
servidor:
#!/usr/bin/env python

#Variables
host = 'localhost'
port = 8050
#Se importa el módulo
import socket

#Creación de un objeto socket (lado cliente)


obj = socket.socket()

#Conexión con el servidor. Parametros: IP (puede ser del tipo 192.168.1.1 o localhost), Puerto
obj.connect((host, port))
print("Conectado al servidor")

#Creamos un bucle para retener la conexion


while True:
#Instanciamos una entrada de datos para que el cliente pueda enviar mensajes
mens = raw_input("Mensaje desde Cliente a Servidor >> ")

#Con el método send, enviamos el mensaje


obj.send(mens)

#Cerramos la instancia del objeto servidor


obj.close()

#Imprimimos la palabra Adios para cuando se cierre la conexion


print("Conexión cerrada")

Por otro lado, esta que sigue debe ser la codificación del socket en Python a poner en la parte
Servidor:

#!/usr/bin/env python

#Se importa el módulo


import socket

#instanciamos un objeto para trabajar con el socket


Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 7

ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#Puerto y servidor que debe escuchar


ser.bind(("", 8050))

#Aceptamos conexiones entrantes con el metodo listen. Por parámetro las conexiones simutáneas.
ser.listen(1)

#Instanciamos un objeto cli (socket cliente) para recibir datos


cli, addr = ser.accept()

while True:

#Recibimos el mensaje, con el metodo recv recibimos datos. Por parametro la cantidad de bytes
para recibir
recibido = cli.recv(1024)

#Si se reciben datos nos muestra la IP y el mensaje recibido


print "Recibo conexion de la IP: " + str(addr[0]) + " Puerto: " + str(addr[1])

#Devolvemos el mensaje al cliente


cli.send(mensaje recibido)

#Cerramos la instancia del socket cliente y servidor


cli.close()
ser.close()
print("Conexiones cerradas")

Diccionario de entidades, atributos y relaciones

Nombre: Cliente
Descripcion: Esta entidad nos permite representar los clientes con cuenta o que
estan registrados en el BANCO XYZ
Campo Tipo Tamaño Descripción
Identifica el tipo de documento que posee el cliente (No
Type_Documento Cadena 255 puede ser nulo)
Numero unico de identificación del cliente (No puede ser
ID_Cliente Entero 11 nulo)
Almacena el dato de nombre del cliente ( no puede ser
Nombre Cadena 255 nulo)
Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 8

Almacena el dato de apellido del cliente ( no puede ser


Apellido Cadena 255 nulo)

Nombre: Tipo de cuenta


Descripcion: Esta entidad nos permite representar los tipos de cuentas que estan
registradas en el BANCO XYZ
Campo Tipo Tamaño Descripción
ID_Cuenta Entero 11 Identifica el registro unico de cuenta (No puede ser nulo)
Almacena el dato que identifica el tipo de cuenta (No puede ser
Type_Cuenta Cadena 255 nulo)

Nombre: Pais
Descripcion: Esta entidad nos permite representar los paises donde se apertura las
cuentas que estan registrados en el BANCO XYZ
Campo Tipo Tamaño Descripción
Identifica el registro unico de pais (No puede ser
ID_Pais Entero 11 nulo)
Almacena el dato del pais donde se abrio la
Nombre Pais Cadena 255 cuenta (No puede ser nulo)

Nombre: Ciudad
Descripcion: Esta entidad nos permite representar las ciudades donde se apertura las
cuentas que estan registrados en el BANCO XYZ
Campo Tipo Tamaño Descripción
Identifica el registro unico de Ciudad (No puede
ID_Ciudad Entero 11 ser nulo)
Almacena el dato de la ciudad donde se abrio la
Nombre Ciudad Cadena 255 cuenta (No puede ser nulo)

Nombre: Tipo de transaccion


Descripcion: Esta entidad nos permite representar los tipos de transacciones del
BANCO XYZ
Facultad de Ingeniería, Diseño e Innovación
Tecnología de la Información y las Telecomunicaciones
Trabajo Colaborativo
Persistencia y datos transaccionales- Entrega 1 9

Campo Tipo Tamaño Descripción


Identifica el registro unico de transacciones (No
ID_Transacción Entero 11 puede ser nulo)
Almacena el tipo de tranasacciones (No puede
Type_Transacción Cadena 255 ser nulo)

Nombre: Tipo de documento


Descripcion: Esta entidad nos permite representar los tipos de documentos del
BANCO XYZ
Campo Tipo Tamaño Descripción
Identifica el registro unico de Documentos (No
ID_Documento Entero 11 puede ser nulo)
Almacena el tipo de tranasacciones (No puede
Type_Transacción Cadena 255 ser nulo)

Nombre: Transacción
Descripcion: Esta entidad nos permite representar las transacciones del BANCO XYZ
Campo Tipo Tamaño Descripción
Identifica el registro unico de transacciones (No
ID_Transacción Entero 11 puede ser nulo)
Almacena la fecha de la transacción (No puede
Fecha_Transacción Timestamp ser nulo)
Almacena el monto de la transacción (No puede
Monto_Transacción Entero 11 ser nulo)
Almacena el saldo de la transaccion (No puede
Saldo_Cuenta Entero 11 ser nulo)
Numero unico de identificación del cliente (No
Id_Cliente Entero 11 puede ser nulo)
Almacena el numero de la cuenta (No puede ser
Numero_Cuenta Cadena 50 nulo)

También podría gustarte