如何使用三级分类对树表中的产品进行分类

时间:2017-03-10 10:06:48

标签: c# oracle c#-4.0 oracle12c database-administration

我正在为销售管理构建c#项目

我制作了表来登记订单(销售商品)和表来注册进入我仓库的商品

正如您在商店中所了解的那样,您可能会销售带50英寸LED屏幕或32英寸LED屏幕 或者每个屏幕规格是什么或产品是什么

现在,如果我想知道我销售的屏幕数量以及特定日,周,月或年的仓库中仍有多少个屏幕 无论屏幕规格如何(尺寸,型号LED LCD)

所以我想在具有有意义标识符的三个级别上对新表(Product_Classification)中的产品进行分类 然后在这些表中包含有意义的标识符,以便我能够查询我想要的任何统计信息,例如

我在一天,一周,一个月或一年中选择了多少个屏幕? 在一天,一周,一个月或一年中,有多少屏幕尺寸为50英寸?...等等

我计划格式化该标识符并将其分为3个部分,每个部分有4个数字,每个部分都链接到 该树的一个级别XXXX-XXXX-XXXX

示例1

PK_ID |    Full_identifier     | identifier_Description       | class1_ID | class1_Description | class2_ID | class2_Description | class3_ID | class3_Description 
  1   | 1122                   | electronic devices           |           |                    |           |                    |           |     
  2   | 11223344               | electronic devices           |   3344    | LED screen         |           |                    |           |     
  3   | 112233445566           | electronic devices           |   3344    | LED screen         |   5566    |   32 Inch          |           |     
  4   | 1122334455668899       | electronic devices           |   3344    | LED screen         |   5566    |   32 Inch          |    8899   |     Sony Brand

此Full_identifier的优势:

  • 正如您所看到的,Full_identifier的每4位数字将允许我访问该分类的级别,就像我可以使用查询所有电子设备一样 Full_identifier 1122的第一部分或 使用Full_identifier 11223344

  • 的前两部分查询所有LED屏幕
  • 实现它的另一个原因是,当用户想要从UI注册产品时,他不必选择4个类别来对产品进行分类,在我的UI中只有一个dropdown list当用户开始键入嵌套的可用分类列表时,将在此表Product_Classification的运行时生成自动完成,当他选择一个类别时,Full_identifier将存储在必需的列中因此,每当我需要树表中的任何子类别时,我都可以通过用户根据所选级别对Full_identifier进行子串来立即访问它

dropdown list

  • 对于统计报告,如果我想列出所有LED屏幕,我只需使用3344 Full_identifier的第二部分,如下例所示
> SELECT Full_identifier,
>           identifier_Description
>        || ' - '
>        || class1_Description
>        || ' '
>        || class2_Description
>        || ' '
>        || class3_Description
>           AS PRODUCT_Classification   FROM PRODUCT_CLASSIFICATION  WHERE Full_identifier = 3344

如果我想列出所有Sony Brand产品,我可以通过使用8899 Full_identifier的第二部分来完成,如下例所示

SELECT Full_identifier,
          identifier_Description
       || ' - '
       || class1_Description
       || ' '
       || class2_Description
       || ' '
       || class3_Description
          AS PRODUCT_Classification   FROM PRODUCT_CLASSIFICATION  WHERE Full_identifier = 8899

问题

如果我为每个级别identifier使用sequenceclass1_ID如果class1_Description仅在identifier未更改

时才会增加{/ 1}}

我可以将{{1}}设为唯一但不是PK recommended here

这可能并且实施得很好吗?

1 个答案:

答案 0 :(得分:0)

回答具体问题:

这可能吗?是 好的实施?否。

多部件或"智能"钥匙不是一个好主意。任何查询现在都需要子串或解码。用户如何指定他或她想要的级别?事实上,在查看表格设计时,您已经拥有描述产品的属性和PK。所以我觉得没用。