測試用…
業務需求說明
模擬銀行業務
- 銀行開戶(註冊個人資料)、開卡(辦理銀行卡)。(一個人可以辦理多張銀行卡,但是最多只能辦3張)
- 存錢
- 查詢餘額
- 取錢
- 轉帳
- 查看交易記錄
- 帳戶掛失
- 帳戶注銷
資料表設計
- 帳戶資料表
- 銀行卡表
- 交易資訊表(儲存存錢和取錢的記錄)
- 轉帳資訊表(儲存轉帳資料記錄)
- 狀態資訊變化表(儲存銀行卡狀態:1.正常2.掛失3.凍結4.註銷)
資料表結構設計
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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()) --開卡時間
)
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,--轉出銀行卡號(與銀行卡表形成主外鍵關係)
CarNoIn 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),--銀行卡號(與銀行卡表形成主外鍵關係)
OldState int not null,--銀行卡原始狀態
NewState int not null,--銀行卡新狀態
StateWhy varchar(200),--狀態變化原因
StateTime smalldatetime--記錄產生時間
)
--為張三、李四、王五三個人進行開戶開卡的操作
--張三身份証:A1122334455
--李四身份証:B2233445566
--王五身份証:C3344556677
insert into AccountInfo (AccountCode,AccountPhone,RealName,OpenTime) values
('A1122334455','1122334455','張三',getdate()),
('B2233445566','2233445566','李四',getdate()),
('C3344556677','3344556677','王五',getdate())
insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) values
('999998888800',1,'123456',0,1),
('999998888801',2,'123456',0,1),
('999998888802',3,'123456',0,1)
select * from AccountInfo
select * from BankCard
/*---------------------------------------------------------
帳戶信息表
AccountId AccountCode AccountPhone RealName OpenTime
1 A1122334455 1122334455 張三 2023-05-10 01:48:00
2 B2233445566 2233445566 李四 2023-05-10 01:48:00
3 C3344556677 3344556677 王五 2023-05-10 01:48:00
------------------------------------------------------------*/
--進行存錢操作:張三存錢$2000,李四存錢$8000,王五存錢$50000
--張三存錢$2000
update BankCard set CardMoney = CardMoney + 2000 where CardNo ='999998888800'
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('999998888800',2000,0,getdate())--交易記錄
--李四存錢$8000
update BankCard set CardMoney = CardMoney + 8000 where CardNo ='999998888801'
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('999998888801',8000,0,getdate())--交易記錄
--王五存錢$500000
update BankCard set CardMoney = CardMoney + 500000 where CardNo ='999998888802'
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('999998888802',500000,0,getdate())--交易記錄
/*---------------------------------------------------------
帳戶信息表
AccountId AccountCode AccountPhone RealName OpenTime
1 A1122334455 1122334455 張三 2023-05-10 01:48:00
2 B2233445566 2233445566 李四 2023-05-10 01:48:00
3 C3344556677 3344556677 王五 2023-05-10 01:48:00
銀行卡表
CardNo AccountId CardPwd CardMoney CardState CardTime
999998888800 1 123456 2000.00 1 2023-05-10 01:54:00
999998888801 2 123456 8000.00 1 2023-05-10 01:54:00
999998888802 3 123456 500000.00 1 2023-05-10 01:54:00
交易資訊表(儲存存錢和取錢的記錄)
ExchangeId CardNo MoneyInBank MoneyOutBank ExchangeTime
1 999998888800 2000.00 0.00 2023-05-10 02:05:00
2 999998888801 8000.00 0.00 2023-05-10 02:06:00
3 999998888802 500000.00 0.00 2023-05-10 02:06:00
------------------------------------------------------------*/
--轉帳:張三給王五轉帳1000元
--轉帳:張三給王五轉帳1000元
update BankCard set CardMoney = CardMoney - 1000 where CardNo = '999998888800'--張三減1000元
update BankCard set CardMoney = CardMoney + 1000 where CardNo = '999998888802'--王五加1000元
insert into CardTransfer(CardNoOut,CarNoIn,TransferMoney,TransferTime)
values('999998888800','999998888802',1000,GETDATE())--轉帳資訊表(儲存轉帳資料記錄)
select * from AccountInfo
select * from BankCard
select * from CardExchange
select * from CardTransfer
/* ------------------------------------------------------
銀行卡表
CardNo AccountId CardPwd CardMoney CardState CardTime
999998888800 1 123456 1000.00 1 2023-05-10 01:54:00
999998888801 2 123456 8000.00 1 2023-05-10 01:54:00
999998888802 3 123456 501000.00 1 2023-05-10 01:54:00
轉帳資訊表(儲存轉帳資料記錄)
TransferId CardNoOut CarNoIn TransferMoney TransferTime
1 999998888800 999998888802 1000.00 2023-05-10 02:18:00
----------------------------------------------------------------*/
truncate刪除資料表所有數據,自動編號重置(編號歸0)truncate table 表名