0

我有四个级别来根据它们的属性对项目进行分类。某些项目可能不需要所有子类别级别,并且某些项目可能共享相同的子类别值。

例子:

Category1   Category2   Category3   Category4
---------   ---------   ---------   ---------
Jewelry     Ring        Wedding
Jewelry     Bracelet    Serpentine 
Jewelry     Necklace    Serpentine
Equipment   Tool        Power       Drill                
Equipment   Tool        Hand        Jigsaw
Accessory   Battery     AA
Accessory   Movie       DVD         Action
Accessory   Game        PS3         Combat 

我希望查找表包含与每个项目相关的值,以便当用户从第一个类别的下拉列表中选择一个值时,下一个子类别中的相应值将自动下拉(级联),依此类推。

我将为大多数常见项目预定义不可删除、不可更新的值,但是我无法提供所有可能的项目,我希望允许用户从第二级以下添加值。

对每个项目进行分类的目的是提供一个统一的方法来描述项目和查询以有效地返回所有需要的项目。

问题:

  1. 如何确保用户添加的新值将正确链接到父值或子值?

  2. 我应该允许用户添加新的类别和子类别,还是应该强制他们仅从预定义的值中进行选择,如果他们的项目不适合预定义的值之一,则选择“其他”值并输入自由格式的评论?

  3. 我定义的当前方法是最佳方法还是您有更好的建议?

以下是我定义的当前表和关系:

在此处输入图像描述

Columns        MS-Access     Informix   Comments
-------------- ------------  --------   ----------------------------------------
Primary keys   Autonumber    SERIAL  
Foreign keys   Long Integer  INTEGER 
English        Text          VARCHAR    Description in English language.
Spanish        Text          VARCHAR    Description in Spanish language.
NonDelete      Yes/No        CHAR(1)    Cant delete predefined value if TRUE.
NonUpdate      Yes/No        CHAR(1)    Cant update predefined value if TRUE.
Deleted        Yes/No        CHAR(1)    User-defined value cant be used anymore. 
StockKeptUnit  Yes/No        CHAR(1)    Non-serialized inventory item if TRUE.
4

2 回答 2

1

他们不是按照定义正确链接吗?毕竟,这就是 PK/FK 关系的重点。

大概创建一个新的 tlkpItemCat2 涉及选择一个有效的父 tlkpItemCat1,否则 INSERT 将失败。只要将 tlkpItemCat2.ItemCat1_SIID 定义为 NOT NULL,您就可以确定有效的关系。

这并不能保证最终用户没有声明领带是电动工具,但这是一个完全不同的问题。


现在,根据对这个确切问题(对象分类)的经验,我可以告诉你,虽然这个设计看起来非常优雅和有用,但从可用性的角度来看却很糟糕。您的用户必须提前知道层次结构才能快速找到项目的正确类别。一旦最终用户开始向您的层次结构添加级别,它就会变成一场反复的、死胡同的搜索,试图找到 Cat1/Cat2/Cat3 的正确组合来应用——这会导致任何事情都会做-just-to-get-past-this-screen 分类。

更好的方法是允许用户简单地输入“Jigsaw”,然后返回一个列表:

Did you mean:
 []   Equipment | Tool       | Power  | Jigsaw
 []   Equipment | Tool       | Hand   | Jigsaw
 []   Game      | Childrens  | Jigsaw
 []   Accessory | DVD-Movie  | Horror | Jigsaw
 []   ... or [something else]?

是的,这需要更多的工作,但从 UI 和 UX 的角度来看,这是值得的。

于 2013-01-17T07:23:29.150 回答
1

这应该允许无限的类别。您需要通过 UI 或 OnChange 事件强制执行非孤立事件。

在此处输入图像描述

然后您的表格内容将如下所示:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2013-01-17T16:01:30.323 回答