我正在为销售管理构建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
实现它的另一个原因是,当用户想要从UI注册产品时,他不必选择4个类别来对产品进行分类,在我的UI中只有一个dropdown list
当用户开始键入嵌套的可用分类列表时,将在此表Product_Classification
的运行时生成自动完成,当他选择一个类别时,Full_identifier
将存储在必需的列中因此,每当我需要树表中的任何子类别时,我都可以通过用户根据所选级别对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
使用sequence
,class1_ID
如果class1_Description
仅在identifier
未更改
我可以将{{1}}设为唯一但不是PK recommended here
这可能并且实施得很好吗?
答案 0 :(得分:0)
回答具体问题:
这可能吗?是 好的实施?否。
多部件或"智能"钥匙不是一个好主意。任何查询现在都需要子串或解码。用户如何指定他或她想要的级别?事实上,在查看表格设计时,您已经拥有描述产品的属性和PK。所以我觉得没用。