|
本帖最后由 todaynew 于 2011-4-24 20:20 编辑
版友付谦同志在做一个党员管理方面的系统,问了一个如何在窗体中双击“支部名称”来更新党员表中的“支部名称”的问题。看了他上传的问题实例,觉得所提问题不是关键,倒是表的设计上有问题。如同付谦同志一样,许多初学者,都喜欢将只需存在于主表中的字段,同时写入子表中。怎么能让版友们理解问题的处理方法呢?我想还是举个通俗的例子吧。
日本的核辐射闹腾的很厉害,通过大气的流动,也已经在我国境内检测出了超标的辐射量。我想是不是应该检测一下我们的食品了。这样,咱们弄两筐子鸡蛋,一筐来源河南,一筐来源山东,我们要检测鸡蛋的核辐射是否超标,检测前我们必须做的工作就是给蛋进行标注。我们对鸡蛋有两种标注方法,第一种是标注“河南蛋001”、“河南蛋002”、河南蛋003”、...“山东蛋001”、“山东蛋002”、“山东蛋003”...;另一种标注方法是先标注鸡蛋筐:1为河南,2为山东,然后用数组标注蛋为(1,001)、(1,002)、(1,003)...(2,001)、(2,002)、(2,003)...
第一种方法拿起鸡蛋就知道产地了,确实很直观,很容易理解。但这中间隐藏着一个毛病,比如领导一拍脑袋,说是不能用“河南”和“山东”来标注,要改成“豫”和“鲁”进行标注。你要一个一个把不干胶揭下来可就麻烦了,虽然不会鸡飞,蛋打的危险性还是存在的。第二种方法就没这个问题了,领导今天拍脑袋想改成“豫”和“鲁”,明天拍脑袋再想改回来,你且可放心的让他去拍好了,他就是拍起了包,拍肿了脸,鸡蛋总是安稳的,没什么影响。
支部和党员就是蛋筐和鸡蛋,班级和学生也是蛋筐和鸡蛋,诸如此类,都是集合与元素的关系。集合有集合的属性,元素有元素的属性,标注标识元素时,不必将集合的属性都带上,只需要将标识集合唯一性的那个值带入到元素的属性中,以示元素与集合的隶属关系就可以了。在数据库的设计上,这就是主键和外键的问题。
这个道理是一个一般性的处理原则。不过还有一种情形不能按照这种方式处理,这种情况就是需要记录集合某些属性,在时间上的变化。在这种特定的情况下,是需要在元素的标识上加入某些集合的属性。比如说我们希望能找到若干年前现有党员所在支部当时的名称。如果支部名称在此期间发生了变化,而该变化没有在支部的数据集或者党员的数据集中记录的话,那么现在想查也无从查起。是否要查到支部当时的名称,不在于实现的手段和方法,重点在于是否必要。
两筐鸡蛋折腾出这些文字,或许还是没有说明白。不明白没关系,看看下面的示例,也许可以加深理解。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|