我遇到的問題如下所示:我公司的供應商爲我們提供了一個包含其產品信息(替代方法是使用XML)的Access數據庫(我導入到SQL Server中),並試圖將其按摩爲更適用於電子商務網站的格式。處理變量類別層次結構
我遇到的問題,也許我只是沒有清楚地思考,是他們的分類信息可以在3-6個子類別深處;總是至少有2個類別(一個頂級父類別和一個更具體的子類別),但最多可以有6個,具體取決於該項目。
他們的數據在下面的表結構提供給我:
CREATE TABLE [dbo].[ECDB2_HIERARCHY](
[SEQ_ID] [int] NOT NULL,
[PFX_NUM] [nvarchar](3) NOT NULL,
[STK_NUM] [nvarchar](12) NOT NULL,
[ECDB2_LVL_1] [nvarchar](max) NULL,
[ECDB2_LVL_1_ID] [int] NULL,
[ECDB2_LVL_2] [nvarchar](max) NULL,
[ECDB2_LVL_2_ID] [int] NULL,
[ECDB2_LVL_3] [nvarchar](max) NULL,
[ECDB2_LVL_3_ID] [int] NULL,
[ECDB2_LVL_4] [nvarchar](max) NULL,
[ECDB2_LVL_4_ID] [int] NULL,
[ECDB2_LVL_5] [nvarchar](max) NULL,
[ECDB2_LVL_5_ID] [int] NULL,
[ECDB2_LVL_6] [nvarchar](max) NULL,
[ECDB2_LVL_6_ID] [int] NULL
因爲我可以忽略SEQ_ID,因爲它是不使用的大部分;將PFX_NUM和STK_NUM連接在一起形成產品的SKU,但這不是問題。我需要能夠動態地遍歷網站的類別。例如,給出下面的一行:
SEQ_ID: 364867 (ignored)
PFX_NUM: AMP
STK_NUM: 73121
ECDB2_LVL_1: Office Supplies
ECDB2_LVL_1_ID 11
ECDB2_LVL_2: Envelopes, Mailers & Shipping Supplies
ECBD2_LVL_2_ID: 26
ECDB2_LVL_3: Envelopes
ECDB2_LVL_3_ID: 195
ECDB2_LVL_4: Business Letter Envelopes
ECDB2_LVL_4_ID: 795
ECDB2_LVL_5: (empty)
ECDB2_LVL_5_ID: 0
ECDB2_LVL_6: (empty)
ECDB2_LVL_6_ID: 0
的用戶應該能夠通過各級瀏覽,但什麼拋出我送行是提供的數據(見下文)樣品的網站顯示一個子類別下的所有項目在隨機間隔......它看起來像是在第三級(ecdb2_lvl_3),但對於沒有第三級的物品,它從第二級開始顯示。正如您從模式中可以看到的一樣,它們將它們放在一張表中,列出產品及其所屬的所有類別,而不是類似於自引用類別表格和加入產品表格。
問題是,有些項目只有2個級別,有些像這個有4個,有幾個都有6個 - 供應商的樣本網站,可在http://www.biggestbook.com做得很好我想要什麼,但我無法訪問他們的代碼,所以我不知道他們究竟是如何拉回類別並遍歷它們。我假設他們有某種全球性的標誌來表明你目前的水平(例如1個辦公用品,2個信封等等),以便他們可以跟蹤你當前的深度,以及然後檢查每個子級別以查看是否有更多子類別顯示,但是當我想到如何有效處理時,我正在畫空白。他們的命名方案也有很多不足之處,但如果需要的話,我可以稍後解決這個問題。
任何人都有如何解決這個問題的建議?我正在計劃C#/ ASP.NET中的商店(可能是MVC,可能不是),因此C#示例將非常有用,但我可以輕鬆地理解大多數語言。