У меня проблема в следующем: поставщик моей компании предоставляет нам базу данных Access (которую я импортирую в SQL Server), содержащую информацию об их продуктах (альтернативой является использование XML), и я пытаюсь втиснуть это в более удобный формат для использования на веб-сайте электронной коммерции.
Проблема, с которой я сталкиваюсь, и, возможно, я просто не думаю, заключается в том, что информация об их категориях может быть где-то в 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), но для предметов, у которых нет 3-го уровня, он отображается начиная со 2-го. Как видно из схемы, у них все это собрано в одной таблице, в которой перечислены продукты И все категории, к которым они принадлежат, вместо чего-то вроде таблицы категорий с самостоятельными ссылками и затем таблицы присоединяемых продуктов.
Проблема в том, что у некоторых предметов есть только 2 уровня, у некоторых, как этот, есть до 4, а у некоторых есть все 6 - примерный веб-сайт продавца, доступный по адресу http://www.biggestbook.com, делает хорошую работу о том, что я хочу, но у меня нет доступа к их коду, поэтому я остаюсь почесывая голову, как именно они отбрасывают категории и обходят их. Я предполагаю, что у них есть какой-то глобальный флаг, указывающий, на каком уровне вы находитесь в данный момент (например, 1 для канцелярских товаров, 2 для конвертов и т. Д.), Чтобы они могли отслеживать текущую глубину и затем проверьте каждый подуровень, чтобы увидеть, есть ли еще подкатегории, чтобы показать, но я рисую пробел, когда я думаю о том, как справиться с этим эффективно. Их схема именования также оставляет желать лучшего, но я могу заняться этим позже, если потребуется.
У кого-нибудь есть совет, как решить эту проблему? Я планирую хранить в C # / ASP.NET (возможно, MVC, возможно, нет), чтобы примеры C # были бы наиболее полезны, но я могу следовать большинству языков достаточно легко, чтобы понять это.