关于数据库中客户基本资料存储信息分类的设计说明

设计|数据|数据库

关于数据库中存储信息分类的设计说明 zyx zyx 2 112 2002-11-14T03:56:00Z 2002-11-20T01:46:00Z 2002-11-20T01:46:00Z 3 259 1480 ufosft nanjing 12 2 1817 9.2812 7.8 磅 0 2
关于数据库中客户基本资料存储信息分类的设计说明

 

在进行系统数据库设计时,经常使用对客户基本资料的分类处理,如对商业客户的分类处理,一般的设计人员可以使用下面几种方法去实现:

 

 

1).直接在对客户进行编码的过程中,把客户的分类信息编写到客户代码中;

       利用系统维护的分类代码信息进行代码编写,在代码的特定的代码位具有特定的分类信息,例如:  11  01   00 01   001  客户商业类型  客户地区代码 客户…..  …..  客户序列号

 

这种方式的表结构可以这样设计:

 

客户档案表

客户编码

客户名称

…….

 

代码维护表

代码类别

父代码

代码

含义

……
 

 

 

 

 

 

 

 

 

 

使用这种方法的好处有:    a.通过代码可以了解客户的大概情况

b数据库中表结构的定义比较简单

c.对客户进行统计分析直接对客户代码处理,处理过程简单好控制

使用这种方法的缺点有:    a.用户对客户进行编码时,必须要准确了解客户的详细分类信息

                                          b.客户性质发生改变时,要改变客户代码非常困难

c.客户代码比较固定,一但定义且被其他业务模块使用后就不能重新修改

                                          d.无法修改客户分类规则,无法增加删除分类信息,一般最终用户对其客户的分类方法会根据其具体的业务规模大小进行客户分类设计,小型企业和大型企业的客户的分类方法肯定不会使用相同的分类方法,这样系统的灵活性能是最差的

 

 

2).在客户基本资料表中增加分类栏位,客户代码使用简单的序列编码方法实现;

       这种设计方法是现在应用系统中最常用的数据库设计方法,客户代码已经失去的具体的含义,只是在建立客户基本资料的系统产生的序列号,没有其他任何的含义;当然也可以在客户编号中保留通用的较少的分类信息,但是越少越好。在表中定义一些存储分类信息的栏位,如:客户所属地区码,客户分类码,客户规模码,客户信用类别,等等栏位。在系统设计时可以尽量的考虑到用户可能使用的所有的分类情况,用户最终使用不使用由用户根据自己的特定情况的处理,可以选择部分栏位。

 

这种方式的表结构可以这样设计:

客户档案表

客户序列编码

客户名称

地区分类

规模分类

信用分类

企业性质分类

…….

 

 

代码维护表

代码类别

父代码

代码

含义

代码维护表

代码类别

父代码

代码

含义
 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用这种方法的好处有:    a.客户代码定义比较简单,不需要客户基本资料录入人员对客户具体的分类情况特别了解,可以先保持分类代码缺省和大概的分类

                                          b.系统的灵活性比较高

                                          c.客户性质发生变化时,对系统的影响比较小

使用这种方法的缺点有:    a.表设计比较困难,设计人员要考虑的比较全面,各种分类情况都要通过相应的分类栏位实现

b.在系统详细设计和代码实现阶段的工作量比较大,因为要考虑用户可能使用那几类分类方式,而且对不同的分类要做相应的代码实现,代码的通用性比较差

c.在未知的将来,如果存在未考虑的分类情况,则系统需要维护

d.表与表之间的关联(References)比较紧密,因为客户基本资料表的访问几率是比较高的,太多的关联一定会导致系统运行速度,很容易产生表间互锁现象

 

 

 

3).使用分类代码表

       在这种设计结构中,把客户基本资料中的分类信息和不可分类信息分开处理,可以通过分类处理的信息通过专门的分类代码表存放,在客户基本资料表中只存放一个分类代码表中的索引号(代码表中的主键)。在分类代码表中,改变原来的每个分了占据一个栏位的竖向方式为每个分类占据一条记录的横向方式,可以正对不同的资料有针对性的具体分类方法。

客户基本资料表中,客户代码使用第二种方式的客户代码编码方案,用户需要对客户进行分类归档时,可以进入分类归档模块进行处理,把基本资料维护和分类归档信息维护分步处理。

 

这种方式的表结构可以这样设计:

 

客户资料表

客户编码

客户名称

分类代码

……

分类代码表

分类代码(PK)

分类序号(PK)

具体分类码类别

具体分类码

1

N

代码维护表

代码类别

父代码

代码

含义
 

 

 

 

 

 

 

 

 

 

 

 

 

 

使用这种方法的好处有:    a.客户代码定义比较简单,不需要客户基本资料录入人员对客户具体的分类情况特别了解,可以先保持分类代码缺省和大概的分类

                                          b.系统的灵活性高,可以随时维护客户的分类代码信息

                                          c.客户性质发生变化时,对系统的影响非常小

d.系统在访问客户资料表时根据是否需要查询分类信息而自由的设定是否关联分类代码表

e.系统中的所有分类归档信息可以统一管理

使用这种方法的缺点有:    a.在系统数据库设计的工作量比较大

b.数据的维护查询过程比较复杂,因为涉及到多张表的关联,故执行效率可能会降低

 

 

       在进行系统的多层架构设计时,可以使用第三种方法。前端表现层只负责和用户的界面交互工作,关于业务逻辑处理在中间业务逻辑层进行处理,数据存储层负责数据存储工作。

时间: 2024-10-30 07:57:17

关于数据库中客户基本资料存储信息分类的设计说明的相关文章

哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题

问题描述 哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题 大神们跪求招数:orcale数据库中的一个字段YXQDW(有效期单位) 类型varchar2(2) 才两字节 用来存一个汉字,比如"年",我的项目(C#)一个汉字占用3个字节, 写SQL语句 insert不进去啊,提示字段范围超出了.难不成要像blob字段那样写?或者有什么更好的方式能将该字段插入呢?万分感激! 解决方案 可以换成nvarchar(2),这个是可变长度

使用Mybaits存储图片存储到数据库中代码

问题描述 使用Mybaits存储图片存储到数据库中代码 使用Mybaits存储图片存储到数据库中代码 先要将其转换成二进制 解决方案 用C#实现图片数据库存储与显示存储图片到access数据库中java存储图片到数据库 解决方案二: 将图片流转换成byte[]

MySql数据库插入式的多存储引擎机制

什么是MySql数据库? 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其实是数据库管理系统,它们可以存储数据,并提供查询和更新数据库中的数据的功能等等.根据数据库如何存储数据和如何操作数据的实现机制不同,这些数据库之间即有区别又有共同点. MySql数据库是开放源代码的关系型数据库.目前,它可以提供的功能有:支持sql语言.子查询.存储过程.触发器.视图.索引.事务.锁.

如何正确处理数据库中的Null

数据|数据库 对于初学者, 在处理数据库中的 Null 资料型态是有一点麻烦的事, 在这篇文章文章中我们将谈谈 Null , 你将会了解到如何知道一个值是 Null , 哪些函数可以或不可以处理 Null 首先, 我们必须知道在 VBScript 中, Variant 是唯一的一种资料型态, 对于那些已经熟悉其它语言的程序开发者, 可能会感到有点不习惯. 使用 Variant 的好处在于其相当有弹性, 因为 Variant 可以储存任何数据类型, 例如, 整数, 字符串, 日期时间, 甚至包括对

树结构-如何将各个级别的menu菜单存储到数据库中

问题描述 如何将各个级别的menu菜单存储到数据库中 如何将各个级别的menu菜单存储到数据库中.这些菜单类似一个树结构. 解决方案 很简单,存储菜单id,上一层菜单的id和菜单信息,这三个字段,就可以实现树型的菜单了. 解决方案二: 其中顶层菜单的上一层菜单的id为null

关于存储到数据库中的内容的加密问题

问题描述 关于存储到数据库中的内容的加密问题 使用JAVA语言编写的一个管理系统,考虑到安全因素,想把存储至MYSQL数据库中的内容(文本内容)进行加密存放,有没有比较好的办法?最好能给出一个不容易被破解的算法. 解决方案 aes des算法都可以. 解决方案二: 不知道AES DES效率怎么样?数据库的支持怎么样? 解决方案三: 数据库中存储文件路径问题

用ASP.NET 2.0在数据库中存储二进制文件

一.引言 在构建数据驱动的应用程序时,经常需要捕获文本和二进制数据.这样的程 序可能需要存储图像,PDF,Word文件或其它二进制数据.能够使用两种方式来 存储这些二进制数据:存储在web服务器的文件系统上并添加一个对数据库中相 应文件的引用:或直接存储在数据库本身. 文本数据,例如字符串,数字,日期,GUID,货币值,等等-在数据库系统中 都有适当的和相应的数据类型定义.例如,在Microsoft SQL Server中,你可以 使用int数据类型来存储一个整数值:而为了存储一个字符串值,你可

如何把spinner中的dropdown item存储到sqlite数据库?

问题描述 如何把spinner中的dropdown item存储到sqlite数据库? 我想存储 spinner中的dropdown值到数据库.我可以按照android开发网站的说明中获得dropdown,但是当用户点击保存按钮时,不能把dropdown的值存储到数据库中.请问如何把spinner中的dropdown item存储到sqlite数据库? 我用的是下面的代码: public class Akshay extends Activity { @Override public void

rsyslog日志存储到mysql数据库中并利用loganalyzer进行web图形化分析管理

系统日志的重要性,相信大家都深有体会,当发生故障后,第一时间就是查看相关报错信息和日志信息,以定位问题所在,还可以基于日志,进行日志的分析,从而获取系统运行状态的一些规律,本篇就介绍关于系统日志的先关内容,具体分为: 1.rsyslog相关概念的介绍 2.自定义日志存储的信道(facility)和存储位置,让rsyslog作为服务端记录rsyslog客户端的日志信息 3.定义rsyslog的日志存储在mysql数据库中 4.利用loganalyzer实现对存储在mysql数据库中的rsyslog