“菜单退出来,选项都长一样,要怎么选啦.....Orz”
客户名字太普遍,敲订单时链接客户数据,却找不出是哪一个人下的单?如果不希望你的数据库用户陷入这种窘境,表单设计时,记得设一个拥有“独特值”(unique value)的字段,例如客户编号(流水号),让每一个“王大明”都可以被认得出来!
在我们讨论的情境下,“独特”就是“独一无二”,“独特值”就是指“在某个范围内没有重复、独一无二的值”。
在 Ragic 的表单设计“独特值”,意思就是该表单某个字段的字段值要是独一无二、不重复的。最常见的独特值是流水号,在 Ragic 可以用自动生成字段值来达到。不过只要是独一无二的值,自行编码或自行输入也可以,在 Ragic 你可以把字段设为“不可重复”属性来确保不输入重复的值。
一般来说,我们要求要是“独特值”的字段,会是数据库/数据表( Ragic 的一张表单)中,用来辨认每一笔数据的依据,这个依据也称为数据表的“ Key 值”。
举例来说,一张商品数据表单中有 100 笔商品数据,此时光从“库存数量”字段的字段值( 5 个? 10 个?),或是“颜色”字段的字段值(白色?红色?),我们看不出这是哪一笔数据,通常得从“商品编号”或“商品名称”的字段,才能辨认这其实是哪一笔数据/哪一个商品。
假如今天要管理商品数据的是一家小文具店,原本只有进 A 型号的铅笔,店家在商品表单的“商品名称”字段将 A 型号铅笔记载为“铅笔”,之后进 B 型号的铅笔时没注意,又创建了一笔商品名称同样是“铅笔”的数据,那么店员在表单中以“商品名称”为依据,搜索/筛选 A 型铅笔时,就会找到两笔数据,分不出谁是谁;卖出一支 B 型号铅笔时,也会不知道在哪一笔扣库存数量。
因此,作为数据辨认、比对基准的 Key 值,应该要是独一无二、不可重复的。以前面的例子来说,第一种调整方法就是“商品名称”改成“ A 型铅笔”、“ B 型铅笔”,让“商品名称”都是独特值,而第二种更便于管理的方法,就是另外把以流水号生成的“商品编号”字段当 Key 值,找商品和扣库存时都以商品编号为依据,人为失误的概率就更小了。这就是前面建议大家帮“有很多王大明”的客户表单,设计“客户编号”独特值字段的原因了。
也许你会说:“我只要看这个王大明是地址在台北市的王大明,那个王大明是地址在台中市的王大明,我就知道谁是谁了,不会分不出来呀!”
但问题是:首先,当你的客户只有 100 个时,或许可以这样做,但成长到一千、一万、一百万时,你还分得出来吗?其次,用肉眼和回忆一一辨认谁是谁,浪费时间出错概率又高,这是我们最不鼓励的数据处理方法。
最重要的是,这个辨认的依据不只是要给用户看,很多时候也是要让计算机在运行我们希望的自动化任务——例如叫出某笔数据、找出某笔数据的某个字段、更新某些条件的数据——时,能够根据 Key 值来比对数据,而在没有做其他设置的条件下,计算机并不会跟你心灵相通到知道要怎么从其他各种不同条件里确认。
哪些状况下,计算机得帮你比对/查找/更新某笔特定的数据,以至于非常需要“ Key 值”/“独特值”呢?接下来我们以 Ragic 为例一一解说。
敲订单时点选一下“客户编号”,系统就退出“客户数据”菜单,点选之后自动加载“客户姓名”、“地址”、“电话”,这是 Ragic 链接与加载的经典应用,在这里“客户编号”是“链接字段”,“客户姓名”、“地址”、“电话”是“加载字段”。
当你点选“链接字段”时,其实就像要从一个菜单里选出一个“选项”(在此情境菜单=链接加载的来源表单),如果菜单里出现两个一样的选项(非独特值),点选数据的人就会难以判断,这就是文章一开始“菜单退出来,选项都长一样,要怎么选啦.....Orz”的问题。因此,我们都建议“链接字段”要是“独特值”字段。(这部分的扩展阅读可以参阅这里)
注:如果你原本已用非独特值字段,创建了链接与加载关系,之后希望修改的话,请用这个方法拖曳改变参照字段。不需要将原本的链接关系删除重建哦(删除重建比较容易损失原本的链接字段数据)。
当你准备将 Excel 或 CSV 檔的数据汇入 Ragic (或其他表单软件)时,用户指南通常会要求你要在第一栏放上一个独一无二的“Key Field”,这其实就是我们本文讨论的“ Key 值”/“独特值”字段。
这个 Key 值在汇入时选择“数据覆盖”原则为“更新旧数据”模式时,特别重要。从外部将数据汇入 Ragic 时,可以选择要单纯的将所有数据单击照字段倒进去(生成新纪录),或是逐一比对汇入表单中原本有的数据,只汇入该表单没有的数据,不汇入重复的数据。此时,系统需要比对哪笔数据是哪笔数据,因此就需要 Key 值。
例如“更新别张表单字段值”,需要去比对要更新另一张表单的哪笔数据。其实,基本上,我们会建议无论如何,尽量都在表单中创建一个“ Key 值”字段,反正,用不上也没有坏处,但有需要却没有的话却很麻烦啊!
举一个客户的例子跟大家说明。(为保护客户隐私~?案例是改编的,不用对号入座噢!)
我们专业的客服建议客户的“订单”表单要有一个独特值字段“订单编号”,可以是流水号组成的,也可以自己编码、用字符串公式组合,但必须是“独特值”。
客户:“那我就用‘订单日期’加上‘商品编号’当订单编号~‘商品编号’是独特值~”
客服:“......”(不同客户同一天订同一个商品,订单编号不就重复了?)
你可以在列表页上,使用加总与分析功能,看看是否有哪个字段每个字段值的笔数都是 1 ,是的话就代表是独特值。用这个方法也可以检查重复值。不过请记得,大多时候数据会是随时新增 / 变动的,某个字段现在在你的表单里是独特值,不代表你之后一定 100% 不会新增重复数据,因此加总与分析找出可能的独特值之后,还是要搭配实际流程以及适当的检核机制(例如“不可重复”属性)才能决定。