(06)字段趣事多

原创 2013年12月04日 00:05:31
    不管是做表设计,还是维护数据库,而关于字段和表,我还真碰到过很多有意思的。精巧的就留着压箱底了,咱在这仅举一些不良的例子说说.

 案例1 .  万能字段
      开一个万能字段,把varchar2加得很大,然后把程序构造的字符串记录到这个中。以后有什么变化也不用加字段了,全向里面加。 这种方法我以前听过,听说曾经流行,没想到最近又见到了。一个用 C++开发的项目就用这样弄。 把协议传过来的字符串这样保存,然后select配合like '%xx%'查出结果到MFC界面读取后再一顿狂解析,再展示成listview或报表。这样搞真是无语了。

 案例2.  为了速度,乱开冗余字段
       我见过一个惨痛的案例,某公司的数据库为了防止xxxx查,放在了HK那边,老板又省不得出钱,造成这边访问时速度很慢, 反应很大.开发在想尽办法后,发现物料表的访问量很大,特别是“物料名称”这个字段到处都有用到,而物料表本身数据量也相当大。所以他们认为,在每个用到物料名称的表上,加上物料名称这个字段,就能大大提高速度了。他们也确实这样做。
      很好,当时的效果好像很不错,速度提升很明显。 但运行一段后就发现,数据库完全乱套了,系统上的各个物料,打印出的报表,很多物料都对不上了。 原来因为这个字段用到的地方太多了,而开发的程序改得并不那么好,很多物料名称的中途变更并不能那么完美的在其它模块体现出来。
      只能说,为了提高速度,适当的用一些开冗余字段等方式有时是可行的,但一定要在可控范围内。如果线上系统这样的更改,一定要做好测试工作再上。

 案例3. 字段的命名很奇怪,
        有英文与拼音共存的,有用无意义的字来命名,还有些把名字取得超长,这,写代码时不痛苦吗?
        嗯,还有关于取中文字段名的我前面的文章已经说过了。最后还有一种,使用保留字命名字段的,使用时带来很大的麻烦。

 案例4.  表结构设计不合理,乱开字段。
       有得没得开一堆 a1....a12,b1....b12之类的字段在一个表上。
    像Oracle ERP或QAD之类商业ERP的表结构可能会在一些表上开一些字段做为用户自定义字段,是有道理。
     但有些做表设计时,则不同,他们会在开表时可能依照某一张实际的报表来开,而刚好这张报表是横向显示的,
     他们就照着这样设计,有几个栏位就开几个字段。

案例5. 明知道Varchar2的好处,仍坚持用char的
    varchar2与char的区别,做数据库的应当清楚,但有些旧系统的表结构用得是char,人们在升级时有顾虑不想动,情有可原,但
新增加的表结构也这样弄,为了一致而一致就有点想不明白了。

案例6. 不恰当的用 BLOB 
    这个真是个折磨。 在有些业务上用blob存一些证件像之类是没问题的。但有人把这个功能放大了,好家伙,把什么文档都向上面存。 一方面使数据库急剧澎涨。另一方面blob显示到界面的响应速度并不令人满意。 对于这种blob类型,在使用前一定要搞清楚需求,是否真有必要,如有些为了安全性考量一定要这样做那就没有办法,否可以采取其他方法达到这个效果。
    方法一:  只在字段中保存文件路径,然后将保存文件的目录共享给应用,使其能访问。问题是这种安全性不太高。
    方法二:  采用Oracle的 BFILE 类型,也能达到同样的效果,且没有了使用急剧澎涨的隐患。
    
案例7.字段无人认领。
    这个在上线过一段时间的系统中有时会见到,有些字段里面有一些值,甚至有建索引,但好像又没看到有地方用到。 
 常是DBA问开发,开发问DBA,都说不清楚, 直到某人一拍脑袋,记起来了, 好像以前有个什么业务逻辑有用到过。
或因为某个临时原因加的,现在已经没有用了。甚至出现某些表都会无人认领的情况。
 文档没即时更新,人员变更,业务变更,维护不留意等都是造成这种现象出现的原因。唉.


我暂时记起了这么多,印象中现在这些现象越来越少见到了,这真是好事。 另外,不知你们有没见过更有趣的? 欢迎补充啊。

MAIL:xcl_168@aliyun.com
Blog:http://blog.csdn.net/xcl168

版权声明:本文为博主原创文章,未经博主允许不得转载。

程序三年,遇到的趣事盘点。

别这么放肆,没什么用。 首先,切勿将本文当做职场指南,否则很有可能把你指的找不到南。 如果有副标题,那么一定是:程序三年,遇到的趣事盘点。 ----------------------------...
  • zmobs
  • zmobs
  • 2015年04月25日 11:37
  • 2115

程序员 身边的趣事

赶紧   去投票 !吧 博主已等候你多时了!  最近几天csdn正在推选csdn博客之星,希望读者能够给我奉上宝贵的一票我会再接再厉,为大家写更多的文章!!下面轻松一下把!来看看程序员出现了那些趣事!...
  • u011225629
  • u011225629
  • 2015年12月16日 16:29
  • 4182

遵循学术写作的九步骤,让写论文变成一件简单的事

1.提问: 该如何将写作过程分成不同步骤,让我可以依循这些步骤完成文章?(清华大学,博士班学生) 2.回答: 论文写作可分为好几个阶段,但由于我们习惯将所有阶段混在一起,因而常在写作时感到不知所措。根...
  • shenziheng1
  • shenziheng1
  • 2016年11月22日 16:05
  • 315

第06讲 mysql 常用字段

数值型 int float decimalint 型 -(2的31次方)~(2的31次方-1) 如果int是个无符号的那么范围是(0 ~ 4294967295) 字符串: char varc...
  • u014449096
  • u014449096
  • 2017年07月17日 16:45
  • 138

js自定义多字段排序

多字段同时排序在后端很好实现,直接order by field1 asc, field2 asc,field3 desc… 如下可实现在前端按照多字段同时排序: //测试数据 var items = ...
  • zsl_955200
  • zsl_955200
  • 2017年12月13日 20:39
  • 86

hibernate annotation多对多中间表添加其他字段的第三种方法

本示例主要以学生(T_Student)和课程(T_Course)之间的多对多关系,中间表Score(分数),学生表和课程表是多对多关系,另外为他们的关系添加额外的字段---分数: T_Student...
  • yudar1024
  • yudar1024
  • 2015年01月22日 20:39
  • 1383

sql-server多字段去重

sqlserver不支持多字段in not-in 就像: delete from user_geo_simplified where (user_id,user_gor_simplified) in ...
  • daming911230
  • daming911230
  • 2015年04月16日 11:03
  • 581

java 按list对象多个字段排序

Java List中的数据如何根据对象的某一个或多个字段排序引出Comparable和comparator的使用       第一节  对于引入题目的探讨 首先把引入题目表述的清楚一些,在一...
  • yinxianluo
  • yinxianluo
  • 2015年02月12日 13:47
  • 11391

mysql多字段唯一索引

项目中需要用到联合唯一索引: 例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定: 例如:user表中有userID,userName两个字段,如果...
  • zhuixunhebe1
  • zhuixunhebe1
  • 2015年08月13日 11:21
  • 4923

关于java中parseInt的一个趣事

今天看Java的时候突然好奇parseInt()的实现,想着会不会和自己平常比赛时候的实现方法一样。于是就翻到了这个:public static int parseInt(String s, int ...
  • CatGlory
  • CatGlory
  • 2016年11月24日 23:45
  • 481
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(06)字段趣事多
举报原因:
原因补充:

(最多只允许输入30个字)