【发布时间】:2017-03-10 10:06:48
【问题描述】:
我正在为销售管理构建 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立即访问它
- 对于统计报告,如果我想列出所有 LED 屏幕,我可以简单地使用 Full_identifier 的第二部分 3344 来完成,如下例所示
> SELECT Full_identifier, > identifier_Description > || ' - ' > || class1_Description > || ' ' > || class2_Description > || ' ' > || class3_Description > AS PRODUCT_Classification FROM PRODUCT_CLASSIFICATION WHERE Full_identifier = 3344
如果我想列出所有索尼品牌的产品,我可以简单地使用 Full_identifier 的第二部分 8899 来完成,如下例所示
SELECT Full_identifier,
identifier_Description
|| ' - '
|| class1_Description
|| ' '
|| class2_Description
|| ' '
|| class3_Description
AS PRODUCT_Classification FROM PRODUCT_CLASSIFICATION WHERE Full_identifier = 8899
问题
如果我为每个级别使用sequence class1_ID,如何管理 identifier,只有在 class1_Description 未更改时才会增加
我可以使 identifier 独一无二,但不能像 recommended here 那样 PK
这是否可行并且实施得很好?
【问题讨论】:
-
使用这种格式化标识符有什么好处?
-
@BobC 在我的问题中写道,Full_identifier 的每 4 位数字将允许我访问该分类的一个级别,我可以使用 Full_identifier 1122 的第一部分查询所有电子设备或查询所有 LED使用 Full_identifier 11223344 的前两部分进行筛选
-
这是一个“如何”,但问题是“为什么”?
-
没有它如何构建列完整标识符我的朋友如何生成该列?如何控制?
-
这是重复的。继续讨论为什么这是一个坏主意。 stackoverflow.com/questions/42704445/…
标签: c# oracle c#-4.0 oracle12c database-administration