嗨,我正在设计一个将列出 13,000 种电子产品的网站,首先我希望能够通过我已经创建的侧导航进行导航,我会将这些电子部件的类别存储在数据库中吗?如果是这样,存储类别的最佳方式是什么?因为我有一些具有 3 层类别的产品,例如
- 半导体
- 二极管
- 转移。
如您所见,我对如何在数据库中正确执行此操作有些困惑。
有很多方法可以处理这个问题。我建议这个。首先创建两个表
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表示Category item Link,CCL表示Category Category Link。
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 表进行迭代以填充列表。