Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> 表  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1701982
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

是否有必要设计能动态增加表的字段数的软件?

作者:cg1  摘自:access911.net  :cg1  更新日期:2006-9-19  浏览人次:

 

问题:

是否有必要设计能动态增加表的字段数的软件?

我现在想在ACCESS 上建立一下数据库,但是需求变化很不确定,很可能在日后要增加字段,这样的话,有可能对以前的客户造成一定的影响,大家有没有一种比较好的办法解决这个需求增加的问题,我想的一种方法是现在就预留一些字段备用,不知道这样行不行?

 

回答:


针对在设计阶段无法预测的新功能,预留几个字段是一种常用的方案。但前提是该需求完全不可知。
如果需求可知的情况下则不应该选择预留字段的方案,也不应该选择用 ADOX 或者 DDL 动态增加字段的方案,因为那样对多版本管理非常不利。

什么是需求可知但是要动态增加字段的情况呢?
比如:有一个 CRM 软件,里面需要保留客户的信息,一般是定义一个客户表
create table Customer (id AUTOINCREMENT(1,1),name text(50),ClassID long,address text(150) .....)
这里举例了客户名称(name)、客户分类ID(classid)、地址(address)几个字段,但是大家知道,客户信息几乎是无止尽的,也许下面还有 N 多个信息需要存储,比如联系电话就可能有 10、20、30个(虽然比较极端)。

上述情况应该选择的方案我认为应该将列转为记录更合适,比如:

表1
ID  客户名称  类别    地址    电话1              电话2           ...........
1    a          1     上海    021-11255115       021-25561555    ...........
2    b          1     北京    010-15566554       010-20655456

转化为

表2
ID  客户名称  类别    
1    a          1     
2    b          1

 

表3
ID     客户ID    信息名称     内容
1       1         地址        上海
2       1         电话1       021-11255115
3       1         电话2       021-25561555
4       1         ....          ....
...........

50      2         地址        北京
51      2         电话1       010-15566554       
52      2         电话2       010-20655456
53      2         ....          ....
...................


上述方法在很多 CRM 软件中都使用,甚至是我们的手机电话簿的数据库中都使用类似方法。当然,上述方法中基本都是文本信息,所以没有类型转换的问题。在实际情况中,除了长二进制类型无法转换为文本,其他常用数据类型基本都能转换为文本,所以数据类型上基本不存在什么问题。如果实在是对类型转换的速度有严格要求的,那么还有两个方案
1、定义多个类型字段,比如:
ID     客户ID    信息名称     文本内容      数值内容   长二进制内容    日期内容
1       1         地址        上海
2       1         电话1       021-11255115
3       1         电话2       021-25561555
4       1         注册年限                  10
5       1         企业商标                             [长二进制位图]
6       1         注册日期                                              2006-1-1

2、定义多个子表,比如:
文本子表
ID     客户ID    信息名称     文本内容

数值子表
ID     客户ID    信息名称     数值内容

....


 

本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接


 

 
相关文章
     没有手动相关文章
     如何控制不同用户能够读取、写入表的不同字段的权限?
     如何更改表的字段名?
     如何建立动态公式的工资系统?
     判断重复,只保留一条记录,但是要显示全部字段
     如何动态定义数组大小?
     用ADO列出某个表的所有字段、索引
     如何把文本字段的输入法模式全部关掉?不要手动
     ado如何取得表的所有字段信息?(附DAO实现相同功能的代码)
     用VBA灵活生成查询,动态生成查询
     如何在adp中得到一个表的所有字段的信息(结构 构架)?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利