设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4507|回复: 12
打印 上一主题 下一主题

[表] 【Access小品】庸人自扰---编码的智慧

[复制链接]
跳转到指定楼层
1#
发表于 2010-12-7 17:05:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 todaynew 于 2010-12-7 19:12 编辑

  经常看到版友问询编码的问题,有的寻求新增编号方法,有的担心跳号了怎么办。这个过程,在我开始学习Access的时候也曾经遇到过,后来发现,这就是一个庸人自扰的问题。不过想清楚这个问题确实不易,和习惯有关,学术一点叫做定向思维起了作用。

  为什么要编码?简单而通俗的讲,就是为了识别。比如说,身份证的编号有四节,分别为地址码、出生日期码、顺序码和校验码。通过这个编码可以看出持身份证的人是什么地方的,多大年龄,什么性别等,这样就识别了一个人的基本情况。

  可是识别和识别不同,人的识别和计算机的识别有很大差异,这个问题很多同志搞不懂。还是用身份证说事,我不知道全世界到底有多少人,但是12位数应该可以将全世界的人唯一编码了,因为地球上的10代人也超不过万亿。可是一个中国却要用18位数进行编码,这是为什么呢?因为我们的身份证编码中有几个分类,这样分类的目的是让任何一个查看身份证的人,知道持卡人的基本情况。也就是说身份证的编码面向的识别对象是人,要保证人不借助其他工具能够进行识别。一个单纯的省份证编号对于计算机来说,它是不能判断这个人的居住地和性别的,你需要另外告诉它身份证编码各节的含义,需要一些对分类数据的解释性数据作为基础,这样它才能翻译出来。

  由此我们可以看出,编码具有两个重要的功能:其一是唯一的标识事物;其二是对标识的对象进行分类。这两个重要的功能在面对人的时候,应该合二为一,因为人脑对分类规则已经进行了储存,便也就可以见码识物。但对电脑则不然,你需要把分类规则对应的数据单独进行储存,才可能使电脑见码识物。

  在电脑处理数据时,我们讲究尽可能的不要数据冗余。如果我们在将分类规则对应的数据进行存储后,还在编码中重复这些数据就显得冗余了。更何况复杂的编码规则,会给程序的开发和维护带来不必要的负担。因此我们在数据库的设计过程中,主要用到的是编码标识事物唯一性的功能,而通常不必考虑其分类的功能。

  懂得这个道理,数据库的设计就简单了很多。既然编码只是标识事物的唯一性,只要区别开来就行了。Access提供了一个自动编号字段的功能,编出来的号当然是唯一的。你会说,那我对数据分类怎么办?好办得很,你需要什么样的分类就加什么样的字段好了。这样的处理,实际上就是将编码的两大功能,分开处理,各司其职。会不会这样思考,就是编码的智慧了。

  可能这样说,你觉得还是难以理解。那就举一个版友提出的问题作为实例。在这个实例中表一中有个字段---Barcode编码字段,这个字段也有两大功能,其一是唯一标识一条记录,其二是对日期等做出分类。那么这个字段是可以将功能分解为两个部分的,唯一标识记录的功能交给NO字段就可以了,分类的字段可以分解为两个(比如在表2中,分解为分类和日期两个字段)。按照这个方法处理,后面的查询、窗体、代码、报表等都能得到极大的简化。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2010-12-7 21:15:17 | 只看该作者
好教程.
另我有时常常在编码使用数字还是字符上比较纠结.
3#
发表于 2010-12-7 21:57:15 | 只看该作者
很好的观点,特别适用于只在程序内部辨认的编号。
4#
发表于 2010-12-8 08:41:21 | 只看该作者
学习
5#
发表于 2010-12-8 11:19:55 | 只看该作者
学习一下,以后用的到
6#
发表于 2010-12-8 12:54:44 | 只看该作者
好思路,好观点
7#
发表于 2010-12-10 16:39:07 | 只看该作者
人才啊

点击这里给我发消息

8#
发表于 2010-12-10 19:57:56 | 只看该作者
tmtony 发表于 2010-12-7 21:15
好教程.
另我有时常常在编码使用数字还是字符上比较纠结.

确实看到很多编码都用字符,还看到一个日期字段也用文本型的,也不敢说其不好...

点击这里给我发消息

9#
发表于 2010-12-12 09:41:59 | 只看该作者
存在 就有 道理
10#
发表于 2010-12-17 22:14:03 | 只看该作者
学习了,谢谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 08:44 , Processed in 0.230628 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表