Oracle练手小项目 开放式基金交易平台.docx
- 文档编号:10772293
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:14
- 大小:35.70KB
Oracle练手小项目 开放式基金交易平台.docx
《Oracle练手小项目 开放式基金交易平台.docx》由会员分享,可在线阅读,更多相关《Oracle练手小项目 开放式基金交易平台.docx(14页珍藏版)》请在冰豆网上搜索。
Oracle练手小项目开放式基金交易平台
项目实战1开放式基金交易平台(数据库设计)
1.1需求描述
随着我国经济水平的持续发展,金融产品也在不断发展。
经中国证监会批准,开放式上市基金已在逐渐发展,为了开展此项业务,招商银行某分行需要一个基金交易平台,以便银行窗口人员在此平台上为广大用户提供基金交易管理的服务,同时为用户提供网上基金交易的便捷服务。
该系统的功能分为前台和后台管理。
1、后台管理
Ø基金管理:
添加基金公司、基金公司查询、停用基金公司、添加基金、基金信息查询、停用基金。
Ø客户账户管理:
活期账户开户、查询活期账户信息、活期账户冻结与解冻、理财账户开户、查询理财账户信息、理财账户冻结与解冻、基金账户冻结与解冻。
Ø交易审核:
审核基金购买和赎回。
2、前台管理
Ø信息查询:
基金信息查询、理财资金查询、当日交易查询、未完成交易查询、历史交易查询。
Ø委托交易:
购买、赎回、撤单。
Ø基金账户管理:
基金账户开户、基金账户信息查询。
Ø理财账户:
转账、修改密码。
1.2问题分析
分析上面的需求,我们可以得出系统中应该有如下数据表。
系统中基金公司表(FundCompany)字段及说明见表1-1。
表1-1FundCompany表的字段及说明
字段名称
数据类型
说明
CompanyId
varchar2(20)
公司ID,主键
Name
varchar2(30)
公司名称
Content
clob
公司简介
Money
number(10,2)
注册资金,单位万元
State
number(1,0)
公司状态,0表示正常,1表示冻结
系统中基金表(Fund)字段及说明见表1-2。
表1-2Fund表的字段及说明
字段名称
数据类型
说明
FundNo
varchar2(20)
基金代码ID,主键
CompanyId
varchar2(20)
基金公司ID,外键引用FundCompany表的CompanyId
FundName
varchar2(20)
基金名称
Price
number(10,2)
基金净值
FundType
number(1,0)
基金类型,1表示开放式,2表示封闭式
Invest
number(1,0)
投资方向,1股票,2债券,3货币,4混合
BuyLimit
number(5,0)
购买下限
Ischange
number(1,0)
是否可转换,0表示不可转换,1表示可转换
YearRate
number(6,5)
年利率,必须是0-1之间的数字
ApplyDate
date
申请日期
State
number(1,0)
基金状态,0表示正常,1表示冻结
系统中活期帐户表(CurrentAccount)字段及说明见表1-3。
表1-3CurrentAccount表的字段及说明
字段名称
数据类型
说明
CurrentAccount
varchar2(20)
活期帐户账号,主键
CurrentPassword
varchar2(20)
活期帐户密码
DepositSum
number(10,2)
活期账户存款金额
CardType
number(1,0)
证件类型,1为身份证,2为房产证,3为驾驶证
CardNo
varchar2(20)
证件号码
Name
varchar2(10)
开户人姓名
Address
varchar2(100)
家庭地址
Phone
varchar2(20)
电话
Sex
number(1,0)
性别,1表示男,2表示女
OpenAccDate
date
开户日期
State
number(1,0)
帐号状态,1表示不可转帐,0表示可用
系统中理财账户表(FinancingAccount)字段及说明见表1-4。
表1-4FinancingAccount表的字段及说明
字段名称
数据类型
说明
FinancingAccount
varchar2(20)
理财帐户账号,主键
FinancePassWord
varchar2(20)
理财帐户密码
MoneyType
number(1,0)
货币类型,1表示人民币,2表示美元,3表示欧元
AccountBalance
number(10,2)
理财帐户金额
EnableBalance
number(10,2)
可用余额
CongealFund
number(10,2)
冻结资金,购买基金所对应的资金(未审核)
State
number(1,0)
状态,1表示冻结,0表示可用
CurrentAccount
varchar2(20)
活期账户账号,外键引用CurrentAccount表的CurrentAccount
系统中基金账户表(FundAccount)字段及说明见表1-5。
表1-5FundAccount表的字段及说明
字段名称
数据类型
说明
FundAccount
varchar2(20)
基金账户账号,主键
FinancingAccount
varchar2(20)
理财帐户账号,外键引用FinancingAccount表的FinancingAccount
CompanyID
varchar2(20)
公司ID,外键引用FundCompany表的CompanyID
CardType
number(1,0)
证件类型,1为身份证,2为房产证,3为驾驶证
CardNo
varchar2(20)
证件号码
Name
varchar2(10)
姓名
Sex
number(1,0)
性别,1表示男,0表示女
Address
varchar2(100)
家庭地址
Phone
varchar2(20)
电话
PostNum
varchar2(10)
邮编
varchar2(30)
电子邮件
createDate
date
开户日期
CongealState
number(1,0)
冻结状态(冻结之后该客户不能购买),0表示未冻结,1表示冻结
系统中购买的基金表(FundBuy)字段及说明见表1-6。
表1-6FundBuy的字段及说明
字段名称
数据类型
说明
PactNo
varchar2(20)
合同号,主键
FinancingAccount
varchar2(20)
理财帐户账号,外键引用FinancingAccount表的FinancingAccount
FundNO
varchar2(20)
基金账户账号,外键引用Fund表的FundNO
Fundname
varchar2(20)
购买基金的名称
Fundnumber
number(5,0)
购买基金的份数
BuyDate
date
购买日期
State
number(1,0)
购买基金的状态,0表示未审核,1表示审核
系统中交易表(Trade)字段及说明见表1-7。
表1-7Trade表的字段及说明
字段名称
数据类型
说明
PactNo
varchar2(20)
合同号,外键引用FundBuy表PactNo
FinancingAccount
varchar2(20)
理财帐户账号,外键引用FinancingAccount表的FinancingAccount
FundNo
varchar2(20)
基金编号,外键引用Fund表的FundNO
FundName
varchar2(20)
基金名称
DealType
number(1,0)
交易类型,1表示购买,2表示撤单,3表示赎回
FundQuotient
number(5,0)
基金份数
BargainPrice
number(10,2)
成交单价
DealMoney
number(10,2)
交易金额
FundAccount
varchar2(20)
基金账户账号,外键引用FundAccount表的FundAccount
DealDate
date
交易日期
Status
number(1,0)
交易状态,0表示未完成,1表示完成
1.3相关技术与工具
技术:
1、数据库基础
Ø表空间、数据库用户的创建
2、为字段建立约束
Ø主键约束
Ø检查约束
Ø唯一约束
Ø默认约束
Ø外键约束
3、使用SQL语句
Ø使用insert插入数据
Ø使用update修改数据
Ø使用delete删除数据
Ø使用select查询数据
Ø使用select联接查询
4、使用Oracle对象
Ø使用createsequence创建序列
Ø使用createview创建视图
Ø使用createprocedure创建存储过程
Ø使用createfunction创建函数
Ø编写PL/SQL块
Ø使用createtrigger创建触发器
Ø使用cratepackage[body]创建包和包体
工具:
ØPL/SQLDeveloper
1.4阶段划分
开放式基金交易平台(数据库设计)实现阶段划分见表1-8。
表1-8阶段任务及时间
阶段名称
使用时间
阶段实现
第一阶段
60分钟
创建表空间,创建用户,创建数据表,添加约束,创建表之间关系
第二阶段
60分钟
创建序列分别生成基金公司编号、基金代码、活期账号、理财账号、基金账户、合同号。
创建触发器,使用序列,分别实现添加表数据的时候,自动添加基金公司编号、基金代码、活期账号、理财账号、基金账户、合同号。
实现基金管理模块。
第三阶段
30分钟
实现账户管理、理财账户模块。
第四阶段
60分钟
实现客户账户管理、交易审核模块。
第五阶段
90分钟
实现信息查询、委托交易模块。
1.4.1第一阶段
实现:
创建表空间,创建用户,创建数据表,添加约束,创建表之间关系。
1、创建表空间fund保存到“D:
\”路径下,如下所示。
createtablespacefund
datafile'd:
\funddb_file.dbf'size50M
2、创建用户test_user指定默认表空间为fund,如下所示。
createusertest_user
identifiedbytest123456
defaulttablespacefund
3、授予用户角色和权限,如下所示。
grantconnect,resourcetotest_user
4、使用test_user用户登录Oracle服务器,创建表。
Ø创建基金公司表(FundCompany)并添加约束。
Ø创建基金表(Fund)并添加约束。
Ø创建活期帐户表(CurrentAccount)并添加约束。
Ø创建理财账户表(FinancingAccount)并添加约束。
Ø创建基金账户表(FundAccount)并添加约束。
Ø创建购买的基金表(FundBuy)并添加约束。
Ø创建交易表(Trade)并添加约束。
Ø建立表之间的外键关系。
1.4.2第二阶段
实现:
创建序列分别生成基金公司编号、基金代码、活期账号、理财账号、基金账户、合同号;创建触发器,使用序列,分别实现添加表数据的时候,自动添加基金公司编号、基金代码、活期账号、理财账号、基金账户、合同号;实现基金管理模块。
创建基金管理程序包FundManager_pack,在程序包里创建过程分别实现,添加基金公司、添加基金公司基金、根据公司编号冻结/解冻基金公司、根据基金代码冻结/解冻基金、根据公司编号查询基金公司、根据公司编号查询基金、根据基金代码查询基金。
1、分别创建序列,生成基金公司编号、基金代码、活期账号、理财账号、基金账户、合同号。
要求如下:
Ø基金公司编号,字母K+5位数字。
Ø基金代码,字母V+6位数字。
Ø活期账号,13位数字。
Ø理财账号,13位数字。
Ø基金账户,字母L+5位数字。
Ø合同号,字母Z+6位数字。
2、分别创建触发器,在添加表数据的时候,自动添加生成的主键编号。
3、添加基金公司“龙腾集团”,如图1-1所示。
图1-1添加基金公司
4、根据基金公司添加基金,如图1-2所示。
图1-2根据基金公司添加基金
5、根据基金公司查询基金信息,如图1-3所示。
图1-3根据基金公司查询基金
基金公司、基金的冻结/解冻,只需修改基金公司、基金State的状态值(0表示正常,1表示冻结)。
1.4.3第三阶段
实现:
基金账户管理、理财账户模块。
创建基金账户管理程序包FundAccountManager_pack,在程序包里创建过程分别实现,基金账户开户、基金账户信息查询。
创建理财账户管理程序包FinancingAccountManager_pack,在程序包里创建过程分别实现,理财账户修改密码、实现转账功能。
1、实现基金账户开户。
Ø基金账户的编号不能重复。
Ø一个理财账号对同一个公司只能开一个基金账户。
2、实现基金账户信息查询。
(查询指定理财帐户所开的所有基金账户的信息)
3、实现理财账户修改密码。
(修改理财需要判断原密码是否输入正确,如果正确才能修改)。
4、实现转账功能。
Ø转帐分为活期转理财和理财转活期。
Ø活期转理财,需要判断活期的资金是否足够,如果不足,就不能进行转帐。
Ø活期转理财,需要判断活期密码是否正确,不正确不能转帐。
Ø活期转理财,活期转入的金额只加入到总金额和可用余额中。
Ø理财转活期,需要判断理财的活动资金是否充足,如果不充足不能进行转帐。
Ø理财转活期,需要判断密码是否正确。
Ø转帐时需要判断理财/活期是否被冻结。
1.4.4第四阶段
实现:
客户账户管理、交易审核模块。
创建客户账户管理程序包ClientAccountManager_pack,在程序包里创建过程分别实现,活期账户开户、查询活期账户信息、活期账户冻结与解冻、理财账户开户、查询理财账户信息、理财账户冻结与解冻、基金账户冻结与解冻。
创建交易审核程序包Auditing_pack,在程序包里创建过程分别实现,审核基金购买、赎回。
1、活期账户开户。
(活期帐户账号编号不能重复)
2、查询活期账户信息。
(可以根据活期账号精确查询,可以根据姓名模糊查询)
3、活期账户冻结与解冻。
(冻结活期帐户时,必须冻结理财帐户,启用活期帐户时,不能启用理财帐户)
4、理财账户开户。
Ø一个活期帐户只能开一个理财帐户。
Ø活期帐户被冻结不能开理财帐户。
Ø活期帐户不存在不能开理财帐户。
Ø理财帐户的用户名称应该跟活期帐户的用户名相同。
Ø理财帐户的信息不允许进行修改。
5、查询理财账户信息。
(可以根据编号精确查询,可以根据姓名模糊查询)
6、理财账户冻结与解冻。
(活期帐户被冻结,理财帐户不能被启用)
7、基金账户冻结与解冻。
Ø基金账户被冻结不能购买相对应公司的基金。
Ø基金公司被冻结,不能解冻基金账户。
1.4.5第五阶段
实现:
信息查询、委托交易模块。
创建信息查询程序包Information_pack,在程序包里创建过程分别实现,基金信息查询、理财资金查询、当日交易查询、未完成交易查询、历史交易查询。
创建委托交易程序包Consign_pack,在程序包里创建过程分别实现,基金的购买、赎回、撤单。
1、基金信息查询。
(根据理财账号,查询所有购买成功的基金记录)
2、理财资金查询。
(根据理财账号,查询理财资金(总金额,可用余额,冻结资金))
3、当日交易查询。
(根据理财账号,获取系统时间查询当天的交易记录)
4、未完成交易查询。
(根据理财账号,查询所有未完成的交易记录)
5、历史交易查询。
(根据理财账号,查询所有交易记录)
6、购买基金。
(根据基金账户,购买相应基金公司的基金)
Ø购买时判断是否开启所需要购买的基金所对应的公司的基金账户。
Ø购买时应判断该公司和该基金是否被冻结。
Ø购买时应判断购买下限是否大于购买数量。
Ø购买时应判断购买所需资金是否足够。
Ø购买时应判断该公司所对应的基金账户是否冻结,冻结了不能基金交易。
Ø购买成功后需要扣除交易手续费用,费率0.75%。
Ø购买时需要插入一条交易记录。
Ø购买成功后,未审核前,购买所需要使用的资金应该在冻结资金中,没有审核前,不能扣去这次交易的手续费用。
7、赎回基金。
(根据基金账户,赎回购买的基金)
Ø赎回时应该判断该公司和该基金是否被冻结。
Ø赎回时应判断所拥有的基金的数量是否大于赎回的数量。
Ø赎回时应判断该公司所对应的基金账户是否被冻结,冻结了就不能进行交易。
Ø赎回成功后需要交手续费用,费率1.5%。
Ø赎回时需要插入一条交易记录。
Ø赎回成功后,赎回的基金的数量应该被减去,在冻结资金中应该加入等价的资金。
8、撤单。
(根据基金账户,查询购买的基金,撤单是在购买成功后,未审核前,撤单可以把本次交易撤销掉,不能扣去手续费用)
1.5项目总结
本项目从数据库设计的角度出发,依据前面学习的Oralce数据库知识,设计了开放式基金交易平台的数据库。
该项目涵盖的内容比较丰富,涉及到数据库的三类完整性约束,实体间的1:
n的联系,n:
n的联系等。
在项目中使用到了Oracle创建数据库表空间、用户、表、视图、序列、触发器、程序包、存储过程等等。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle练手小项目 开放式基金交易平台 Oracle 练手 项目 开放式 基金 交易平台