Академический Документы
Профессиональный Документы
Культура Документы
TRABAJO PARCIAL
Alumnos:
Hernndez Hernndez Elihu
Miranda Hernndez Marco Antonio
Materia: Base de datos distribuidas
Profesor: Javier Rosas Hernndez
Marzo 2015
1. Introduccin
El siguiente trabajo toma ejemplifica una transaccin en la que se necesita transferir el saldo de una
cuenta a otra.
Se indica que se requiere transferir un saldo de la cuenta A a la cuenta B, considerando que el cliente
tiene un nmero de operaciones. Adems cada operacin se guarda en un histrico y en una bitcora
con fines de auditoria.
Mediante el proceso que se describe anteriormente es necesario que validemos que la cuenta
origen como la cuenta destino exista y que en la primera tenga saldo suficiente para poder
transferirlo a la segunda, tampoco debe tener saldo negativo.
2. Modelo E/R
3. Creacin de la BD
4. Cdigo SQL
USE banco_transaccion
GO
CREATE TABLE CLIENTE
(
IDcliente int not null, /*Llave Primaria la cual ser llave*/
Nombre nvarchar(50) not null,
Apellido1 nvarchar(50) not null,
Apellido2 nvarchar(50) not null,
Telefono varchar(16),
IFE nvarchar(30),
RFC nvarchar(14),
email varchar(35),
PRIMARY KEY(IDcliente)
)
CREATE TABLE CUENTA
(
IDcuenta int not null,
saldo Decimal(10,2) check (saldo >=2),
Tipocuenta nvarchar(50) check (Tipocuenta in ('Cuenta de Cheques','Ahorros','Nomina')),
fecha_apertura datetime,
IDcliente int not null, /* LLave foranea referenciada de la tabla cliente*/
PRIMARY KEY(IDcuenta),
FOREIGN KEY(IDcliente) References CLIENTE(IDcliente)
)
BEGIN TRANSACTION
BEGIN TRY
/* Para descontar el importe de la cuenta origen */
UPDATE CUENTA
SET saldo = saldo - @importe
WHERE IDcuenta = @CuentaOrigen
INSERT INTO HISTORICO
(saldo_inicial, saldo_final,fecha)
SELECT
saldo + @importe, saldo, getdate()
FROM CUENTA
WHERE IDcuenta = @CuentaOrigen
COMMIT TRANSACTION
END TRY
BEGIN CATCH
/* En caso de error*/
ROLLBACK TRANSACTION
PRINT 'Se ha producido un error'
END CATCH