具有类别和子类别的产品

时间:2013-05-13 13:09:03

标签: mysql sql

您好我正在设计一个网站,该网站将列出13,000种电子产品,首先我希望能够浏览我已经创建的侧面导航,我将这些电子零件的类别存储在数据库中?如果是这样,存储类别的最佳方式是什么?因为我有一些产品有3层类别,例如

  1. 半导体
  2. 二极管
  3. TRANSORB。
  4. 正如您所看到的,我对如何正确地在数据库中执行此操作感到有点困惑。

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题。我在暗示这个。首先创建两个表

CREATE TABLE ITEM(
ITEM_KEY VARCHAR(20) NOT NULL,
NAME VARCHAR(255),
TYPE_CODE VARCHAR(50) NOT NULL,
CONSTRAINT ITEM_TYPECODE_CK CHECK(TYPE_CODE IN('ITEM','CATEGORY')),
CONSTRAINT ITEM_ITEMKEY PRIMARY KEY(ITEM_KEY)
);

表项目适用于产品和类别。

CREATE TABLE ITEMLINK(
ITEM_KEY VARCHAR(20) NOT NULL,
LINKED_ITEM_KEY VARCHAR(20) NOT NULL,
TYPE VARCHAR(50) NOT NULL,
CONSTRAINT ITEMLINK_ITEMKEY_LINKEDITEMKEY 
             PRIMARY KEY(ITEM_KEY, LINKED_ITEM_KEY,TYPE),
CONSTRAINT ITEMLINK_TYPE_CK CHECK(TYPE IN( 'CIL','CCL'))
);

项目链接表用于层次结构。项目键是父项,链接项项键是子项。 CIL表示类别项目链接,CCL表示类别类别链接。

INSERT INTO ITEM (ITEM_KEY, "NAME", TYPE_CODE) VALUES ('IT01', 'Transorb', 'ITEM');
INSERT INTO ITEM (ITEM_KEY, "NAME", TYPE_CODE) VALUES ('CT01', 'Semiconductors', 'CATEGORY');
INSERT INTO ITEM (ITEM_KEY, "NAME", TYPE_CODE) VALUES ('CT02', 'Diode', 'CATEGORY');

INSERT INTO RWITEMLINK (ITEM_KEY, LINKED_ITEM_KEY, "TYPE") VALUES ('CT01', 'CT02', 'CCL');
INSERT INTO RWITEMLINK (ITEM_KEY, LINKED_ITEM_KEY, "TYPE") VALUES ('CT02', 'IT01', 'CIL');  

现在您可以使用ItemLink表进行迭代以填充列表。