客户回款数据库设计Word格式文档下载.docx
- 文档编号:18302260
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:18
- 大小:188.58KB
客户回款数据库设计Word格式文档下载.docx
《客户回款数据库设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《客户回款数据库设计Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
我们首先要制作一个客户回款信息的存储库,这个存储库储存客户信息、客户回款信息以及合同等,并将这个存储库作为回款系统的后台。
接下来再建立一个主表,也就是客户回款信息表,作为前台功能展开,在这边可以查询客户信息,客户回款信息等,同时也可以对这些信息进行更新,实时监控客户的回款情况,对于超过预警时间的客户予以警告。
最后新系统要在友好的界面下达到预期效果,并在良好的可靠性、高速的效率、易使用的目的下,在安全性和稳定性前提下,给用户们提供各种方便的操作。
在本次设计的客户回款系统中我们后台使用SQLServer2008,前台使用C#。
为了进一步规范应收帐款的日常管理和健全客户的信用管理体系,对应收帐款和已收到的回款账目在销售的事前、事中、事后进行有效控制,特制定本数据库方案和实施办法。
系统设计要求能够满足客户和企业的使用要求,客户每次登录的回款记录和查询,以及企业为方便掌握回款信息和便捷交易而设定的明确的系统。
1.4数据流图
图1回款管理系统数据流图
2、概念设计
概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表达出上述信息世界中的常用概念。
概念模型的表示方法有很多种,在本设计中我们采用实体-联系方法,该方法用E-R图来描述现实世界的概念模型。
2.1分E-R图设计
图2客户实体的属性
图3销售员实体的属性
图4回款记录实体的属性
图5合同实体的属性
2.2合并分E-R图
图6回款管理系统基本E-R图
注:
此处省略了四个实体的属性,这四个实体的属性已经在分E-R图中给出。
3、逻辑设计
3.1E-R图向关系模型转换
将概念结构设计得到的E-R图转换成关系模式,转换一般遵循以下原则:
1)一个实体转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
2)对于实体间的联系可根据联系的具体类型转换成不同的关系模式。
我们根据回款管理系统的E-R图转换得到以下关系模式:
客户(客户ID,姓名,性别,电话,住址);
销售员(职工ID,姓名,性别,电话,职称);
回款记录(回款ID,合同ID,回款金额,回款时间);
合同(合同ID,客户ID,职工ID,签订时间,应付金额,截止日期)。
3.2定义属性的类型、长度以及表的完整性约束
客户信息表CusInfo
字段名
类型
长度
是否主码
是否外码
其他
CusID
varchar
20
Yes
No
CusName
Notnull
CusSex
char
2
CusTel
15
CusAdd
10
销售员信息表SaleInfo
SaleID
SaleName
SaleSex
SaleTel
SaleJob
回款记录表RMR
RMRID
BarID
RMAmo
real
RMDate
date
合同信息表BarInfo
BarDate
Loan
Deadline
data
3.3数据模型的优化
为了消除在系统实现中出现插入异常、删除异常、数据冗余以及数据修改复杂等问题,我们对上面建立的4个关系模式运用关系数据理论进行分析。
如果表中属性之间存在部分函数依赖、传递函数依赖,我们就需要对表进行分解,消除其中的部分函数依赖和传递函数依赖,使表中只存在完全函数依赖。
经过分析,发现上面建立的4个关系模式都已经达到最高的范式级别,都可以达到BC范式,因此不需要再对其进行分解。
3.4设计用户子模式
本次设计的回款管理系统需要对客户进行预警管理,因此我们在这边设计了一个账单视图。
视图中包括客户ID,合同ID,剩余金额,截止日期4项,客户每次回款完毕以后都会收到这张账单,对客户起到提示作用。
销售员也可以通过查询账单来查看客户的剩余金额和截止日期,以便通知客户及时回款。
账单(客户ID,合同ID,剩余金额,截止日期)。
4、物理设计
4.1物理设计内容
数据库的物理设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
(2)对物理结构进行分析,评价的重点是时间和空间效率。
对于数据库查询事务,需要得到如下信息:
●查询的关系;
●查询条件所涉及的属性;
●连接条件所涉及的属性;
●查询的投影属性。
对于数据更新事务,需要得到如下信息:
●被更新的关系;
●每个关系上的更新操作条件所涉及的属性;
●修改操作要改变的属性值。
4.2确定存储结构
1.确定数据的存放位置
为了提高系统性能,应该根据应用情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。
2.确定系统配置
本次设计使用的SQLServer2008提供了一些系统配置变量、存储分配参数,供我们对数据库进行物理优化。
初始情况下,系统都为这些变量赋予了合理的默认值。
但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值,以改善系统的性能。
5、数据库的实施和维护
5.1数据载入
5.3数据库系统的特点和不足
本次设计的客户回款数据库,可以对客户的回款记录进行跟踪,做到实时监控和预警,并且实现简单。
对于现在很多企业面对的客户回款不及时的问题可以进行有效的解决,在本数据库中,使用了一个叫合同的表,其实这个就是现实中的欠条,用来记录客户和商家之间的赊销情况。
在我设计的这个数据库中,合同不仅记录了客户信息、销售员信息、赊销金额等一些常见的款项,我还加入了签订日期和截止日期,这个主要用来提醒客户及时回款。
但是本数据库也存在一些不足,首先就是功能过于简单,在现实中,销售员赊销商品给客户情况更加复杂,在合同中不止记录我设计的那几个款项,还包括赊销的物品,数量,物品单价等一些具体的款型,这个主要是防止客户赖账,不承认自己之前的欠款。
同时在本数据库中,查询操作比较繁琐,这个主要是为了是创建的表符合更高的范式要求。
同时对于查看的内容应该根据用户类型进行区分,例如客户只能查询自己的信息,回款记录等,而销售员可以进行增添用户信息,回款信息等,销售员的权限更高。
这些问题都可以在以后数据库设计中加入,使之更符合用户的需求。
6、小结
数据库是一门很重要的学科,在现在大数据量的情况下,如何将这些数据有效的存储起来是一件很不容易的事情。
本次课程设计我的题目是客户回款数据库设计,刚看到这个题目的时候,自己都不知道这个是做什么的。
经过查阅网上的资料知道了回款的意思,也知道了回款中经常出现的问题,这个主要是因为客户的信誉以及商场上的一些不成文规定。
在现在的大金额的交易中,客户一般不会把钱一次性付清,主要有一下几方面的原因:
客户可用资金不是很充裕;
客户对买到的商品要先适用一段时间,如果有问题客户进行退货之类的操作;
大环境都是如此。
因此在这之间常常出现讨债之类的问题,我们设计的客户回款数据库主要就是解决这个问题。
在前期的需求分析中,我主要考虑了客户与销售员之间的金钱关系,以及我设计的系统要实现的功能。
初步分析以后,发现我还有很多的东西没有考虑,包括具体的回款预警、回款记录之类的问题。
我又对自己没有考虑的东西进行了重新的分析,对系统需求深入考虑了一下。
然后也明确了自己设计这个数据库使用什么数据库管理系统以及前台界面的编程语言。
在概念设计的时候,我返工了一次,这个主要是一开始我的思维出现了一点偏差,后期发现这样设计的数据库会遇到很大的麻烦。
开始我将合同作为一个客户与销售员之间的联系,而合同内容为金额、签订时间、截止时间等,这样设计当然没有问题,在分E—R图设计的时候,我将每个实体都设计好了,在合并E—R图的时候就遇到了困难,因为客户还款是根据合同来还款的,也就是说虽然是客户在还钱,实际上发生联系的是合同和回款记录,但是合同是一个联系,我在这边思考了很久,考虑应该怎么解决,后来我觉的这个合同不能作为一个联系,而是一个实体,这个实体与客户实体、销售员实体三者之间存在关系,而在还款的时候,合同和回款记录发生联系,这样很好的解决了这个问题。
这边出现这个问题主要是受现实中的思维的影响,因为在现实中,人们都是知道客户还钱给销售员产生回款记录,但是就其本质,其实是客户根据合同来还款,比如说还款时间,还款金额等。
所以有些想当然的事情是不能直接下决定的,因为在设计中有些东西是与我们平常的想法是有些出入的,或者说我们平时只是考虑了表面,没有进行深入的研究。
在设计好概念模型以后,一切就变的比较顺利,将E—R图转换成关系模式时,只要注意关系模式中的完整性约束条件,因为有的信息是不能为空的,比如在合同中金额肯定是不能空的,因为客户与销售员之前就是因为金额发生关系,因此金额是不能为空的。
本次设计的回款数据库系统是通过一个Bill表来进行预警,这个Bill表是一个视图,可以查看用户剩余金额以及截止日期。
在前台设计中,没有设计的很复杂,主要是因为自己的水平有限,只设计了一个简单的界面,用来进行增、删、改、查等相关操作。
本次数据库课程设计,将我平时学到的数据库知识有了起来,以及平时自己一些不懂的地方重新学习了一下,整个过程也是蛮曲折的,遇到了很多的困难,通过自己的反复推敲,以及与同学的商量,最后圆满的解决了出现的问题。
虽说设计的数据库系统还有待完善,但是至少觉得自己可以进行一点实际操作,很多时候我们学到的知识很难运用到实际中,或者说实际与我们学的理论差距很大,我们应该要不断将自己学的东西用到实践中,并不断在实践中发现自己的不足,然后再通过理论学习去弥补自己的缺陷。
在理论到实际的过程中,总会遇到很多的错误和困难,只有不断去克服他们,自己才会有所突破。
程序源代码:
创建客户信息表
createtableCusInfo
(CusIDvarchar(20)primarykey,
CusNamevarchar(20)notnull,
CusSexchar
(2),
CusTelvarchar(15)notnull,
CusAddvarchar(10)
);
创建销售员信息表
createtableSaleInfo
(SaleIDvarchar(20)primarykey,
SaleNamevarchar(20)notnull,
SaleSexchar
(2),
SaleTelvarchar(15)notnull,
SaleJobvarchar(20)notnull
);
创建合同信息表
createtableBarInfo
(BarIDvarchar(20)primarykey,
CusIDvarchar(20),
SaleIDvarchar(20),
BarDatedatenotnull,
Loanrealnotnull,
Deadlinedatenotnull,
foreignkey(CusID)referencesCusInfo(CusID),
foreignkey(SaleID)referencesSaleInfo(SaleID)
创建回款记录表
createtableRMR
(RMRIDvarchar(20)primarykey,
BarIDvarchar(20),
RMAmorealnotnull,
RMDatedatenotnull,
foreignkey(BarID)referencesBarInfo(BarID)
创建账单视图
createviewBill(CusID,BarID,MonRemain,DeadLine)
as
selectCusID,BarInfo.BarID,AVG(Loan)-SUM(RMAmo),Deadline
fromBarInfo,RMR
whereBarInfo.BarID=RMR.BarID
groupbyBarInfo.BarID,CusID,DeadLine
withcheckoption;
管理系统界面:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespacehuikuan
{
publicpartialclassForm1:
Form
{
SqlDataAdapteradapter;
DataTableselectedTable0=newDataTable();
DataTableselectedTable1=newDataTable();
DataTableselectedTable2=newDataTable();
DataTableselectedTable3=newDataTable();
DataTableselectedTable4=newDataTable();
publicForm1()
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
bindingNavigator1.BindingSource=bindingSource1;
dataGridView1.AllowUserToAddRows=false;
dataGridView1.AllowUserToDeleteRows=false;
privatevoidlistBox1_SelectedIndexChanged(objectsender,EventArgse)
intindex=listBox1.SelectedIndex;
switch(index)
case0:
comboBox1.Items.Clear();
selectedTable0.Clear();
stringqueryString="
select*fromBarInfo"
;
adapter=newSqlDataAdapter(queryString,
Properties.Settings.Default.HuiKuanConnectionString);
string[]a={"
BarID"
"
CusID"
SaleID"
BarDate"
Loan"
Deadline"
};
comboBox1.Items.AddRange(a);
SqlCommandBuilderbuilder=newSqlCommandBuilder(adapter);
adapter.InsertCommand=builder.GetInsertCommand();
adapter.DeleteCommand=builder.GetDeleteCommand();
adapter.UpdateCommand=builder.GetUpdateCommand();
adapter.Fill(selectedTable0);
bindingSource1.DataSource=selectedTable0;
dataGridView1.DataSource=bindingSource1;
break;
case1:
selectedTable1.Clear();
select*fromCusInfo"
adapter=newSqlDataAdapter(queryString,
string[]a={"
"
CusName"
CusSex"
CusTel"
CusAdd"
adapter.Fill(selectedTable1);
bindingSource1.DataSource=selectedTable1;
case2:
selectedTable2.Clear();
select*fromRMR"
RMRID"
RMAmo"
RMDate"
adapter.Fill(selectedTable2);
bindingSource1.DataSource=selectedTable2;
case3:
selectedTable3.Clear();
select*fromSaleInfo"
Sa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户 数据库 设计