SQL 银行系统

--业务需求说明
--模拟银行业务,设计简易版的银行数据库表结构,要求可以完成以下基本功能需求
--1.银行开户(注册个人信息)及开卡(办理银行卡)(一个人可以办理多张银行卡,但是最多办理3张银行卡)
--2.存钱
--3.查询余额
--4.取钱
--5.转账
--6.查看交易记录
--7.账户挂失
--8.账号注销

--表设计
--1.账户信息表
--2.银行卡表
--3.交易信息表(存储存钱和取钱的记录)
--4.转账信息表
--5.状态信息变化表(存储银行状态1:正常,2:挂失,3:冻结,4:注销)

--表结构设计
create table AccountInfo --账户信息表
(
	AccountId int primary key identity(1,1), --账户编号
	AccountCode varchar(20) not null, --身份证号码
	AccountPhone varchar(20) not null, --电话号码
	RealName varchar(20) not null, --真实姓名
	OpenTime smalldatetime not null, --开户时间
)
create table BankCard --银行卡
(
	CardNo varchar(30) primary key, --银行卡卡号
	--AccountId int not null,     --账户编号(与账户信息形成主外键关系)
	CardPwd varchar(30) not null,  --银行卡密码
	CardMoney money not null, --银行卡余额
	CardState int not null,  --1:正常,2:挂失,3:冻结,4:注销
	CardTime smalldatetime default(getdate()) --开卡时间
)
alter table BankCard add AccountId int not null;
create table CardExchange --交易信息表(存储存钱和取钱的记录)
(
	ExchangeId int primary key identity(1,1), --交易自动编号
	CardNo varchar(30) not null, --银行卡号(与银行卡表形成主外键关系)
	MoneyInBank money not null,  --存钱金额
	MoneyOutBank money not null, --取钱金额
	ExchangeTime smalldatetime not null --交易时间
)
create table CardTransfer --转账信息表(存储转账信息记录)
(
	TransferId int primary key identity(1,1), --转账自动编号
	CardNoOut varchar(30) not null, --转出银行卡号(与银行卡表形成主外键关系)
	CardNoIn varchar(30) not null, --转入银行卡号(与银行卡表形成主外键关系)
	TransferMoney money not null,  --交易金额
	TransferTime smalldatetime not null, --交易时间
)
create table CardStateChange --状态信息变化表(存储银行状态1:正常,2:挂失,3:冻结,4:注销)
(
	StateId int primary key identity(1,1), --状态信息自动编号
	CardNo varchar(30) not null,    --银行卡号(与银行卡表形成主外键关系)
	OldState int not null,         --银行卡原始状态
	NewState int not null,        --银行卡新状态
	StateWhy varchar(200) not null,    --状态变化原因
	StateTime smalldatetime not null,    --记录产生时间
)
-----------------------------------------
--为刘备,关羽,张飞三个人进行开户开卡的操作
--刘备身份证:420107198905064135
--关羽身份证:420107199507104133
--张飞身份证:420107199602034138
insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime)
values('420107198905064135','13554785425','刘备',GETDATE())
insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState)
values('622512478544587',1,'123456',0,1)

insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime)
values('420107199507104133','13454788854','关羽',GETDATE())
insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState)
values('6225547858741263',2,'123456',0,1)


insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime)
values('420107198905064138','13456896321','张飞',GETDATE())
insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState)
values('6225547854125656',3,'123456',0,1)

select * from AccountInfo
select * from BankCard

--进行存栈操作,刘备存钱2000元,关羽存钱:8000元,张飞存钱:50000元
select * from AccountInfo
update BankCard set CardMoney=CardMoney+2000 where CardNo='622512478544587'
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('622512478544587',2000,0,GETDATE())

update BankCard set CardMoney=CardMoney+8000 where CardNo='6225547858741263'
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('6225547858741263',8000,0,GETDATE())

update BankCard set CardMoney=CardMoney+50000 where CardNo='622512478544587'
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('6225547854125656',50000,0,GETDATE())

--
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值