|
电子商务行网站的商品分类目录
1)创建存储商品分类信息表
- <p>CREATE TABLE product_class(ID MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,</p><p> Product_Description VARCHAR(40) NOT NULL DEFAULT '',</p><p> Parent_Flag TINYINT NOT NULL DEFAULT 0,</p><p> PRIMARY KEY(ID),</p><p> UNIQUE INDEX idx_Product_Desc(Product_Description)</p><p> )ENGINE=InnoDB CHARACTER SET 'utf8' COLLATE'utf8_general_ci';</p>
复制代码
2)创建存储商品分类目录之间的上下级关系表
- <p>
- </p><p>CREATE TABLE pc_parent_child(ID MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,</p><p> Parent_ID MEDIUMINT NOT NULL DEFAULT 0,</p><p> Child_ID MEDIUMINT NOT NULL DEFAULT 0,</p><p> PRIMARY KEY(ID),</p><p> INDEX idx_pid_cid(Parent_ID,Child_ID) </p>
复制代码
)ENGINE=InnoDB CHARACTER SET 'utf8' COLLATE'utf8_general_ci';
3)写入测试数据
- <p>
- </p><p>INSERT INTO product_class(Product_Description) </p><p>VALUES('大家电'),('平板电视'),('洗衣机'),('冰箱');</p><p>INSERT INTO product_class(Product_Description) </p><p>VALUES('生活电器'),('取暖器'),('加湿器'),('净化器');</p><p>
- </p><p>INSERT INTO pc_parent_child(Parent_ID,Child_ID) VALUES(1,2);</p><p>INSERT INTO pc_parent_child(Parent_ID,Child_ID) VALUES(1,3);</p><p>INSERT INTO pc_parent_child(Parent_ID,Child_ID) VALUES(5,8);</p>
复制代码
4)商品分类数据查询
商品分类目录的数据读取,都是先读取父节点的信息,再根据父节点信息读取其下子节点的数据信息。
- <p>root@localhost : mysqlops 05:28:41> SELECT M.Product_Description </p><p> -> FROM product_class M </p><p> -> INNER JOIN pc_parent_child N ON M.ID=N.Child_ID</p><p> -> WHERE N.Parent_ID=1 ;</p><p>+---------------------+</p><p>| Product_Description |</p><p>+---------------------+</p><p>| 平板电视 |</p><p>| 洗衣机 |</p><p>+---------------------+</p><p>2 rows in set (0.00 sec)</p>
复制代码
小结:
若是采用枚举类型存储商品分类信息,我们则可以简便地创建一张表,2个字段即可实现上述的做法,最大的缺陷是子节点升级为父节点的时候,则需要发布网站程序与做数据库结构变更。修改枚举类型字段的定义属性,必须以尾部追加的方式,才不影响数据库提供的数据服务。使用我们介绍的替代办法,则需要工程师编写更多的代码实现,可以借助图形化管理工具轻松完成,各自都有优缺点。
一句话总结:任何解决方案,必须从技术、开发成本、维护成本、可靠性等多个角度综合论证,寻找最适合团队、业务场景的方案。
|
|