现做一个jsp咖啡网站,数据库用的是Mysql,商品的分类有两级: |-按用途分类
 |     |
 |     |-咖啡机
 |     |
 |     |-咖啡豆
 |
 |-按品牌分类
 |     |
 |     |-WEGA
 |     |
 |     |-Gioia
 |
 |-按折旧分类
 |     |
 |     |-全新
 |     |
 |     |-八成新一个具体的商品可能是这样的:按用途它是“咖啡机”,按品牌它是“WEGA”,按折旧它是“全新”
这样的话现在有两个问题要解决
1.分类表productType怎么设计?(上述分类中第一级分类是固定不变的,主要是二级分类可随意添加删除。)2.商品信息表productInfo怎么设计?它与分类表怎么产生关系?(比如我想通过点击“咖啡机”,就能查询关于咖啡机的商品)

解决方案 »

  1.   

    public class Type(){
       private Long id;
       private Type parent;
       private List<Type> childs=new ArrayList<Type>();
    }这样的结构是无限极分类的实现
      

  2.   

    我的想法,是把那个表拆成3个表,用途表 品牌表 折旧表 每个表都有对应的主键ID
    商品信息表 加入前面的那些主键ID作为外键
      

  3.   

    问题一
    看我的SQL:
    create table productType
    (
        pt_id int,
        pt_name varchar(20),
        pt_parent int
    )
    这三个字段足够你建立一棵类型树,再在类里边建下模型不就OK了吗问题二
    create table productInfo
    (
       pi_id int,
       pi_type int //引用productType里的ID
    )
    查询语句
    select * from productInfo where pi_type=(select pt_id from productType where pt_name='咖啡机')归根结底,各种系统的操作都是增、删、改、查。
      

  4.   

    7楼的兄弟,模型我不会啊,我现在只是做一点简单的jsp网站,Java很多东西正在研究中~~
    我怎么在页面中输出这些类啊,首先第一级是固定不变的,其次第二级是从数据库中读出的,我要在指定的第一级分类“按品牌分类”显示这类的子类“WEGA”、“摩卡”,在第一级分类“按折旧分类”中显示“全新”、“八成新”,
      

  5.   

    设计一个级联的表形式 表内定义父子关系的两个字段 给你个例子
    CREATE TABLE d_d_category (
      id int(12) NOT NULL auto_increment,
      turn int(3) default '10',
      en_name varchar(50) NOT NULL,
      cn_name varchar(50) NOT NULL,
      abridge_name varchar(20) default NULL,
      parent_id int(12) NOT NULL default '0',
      category_value varchar(200) default NULL,
      PRIMARY KEY  (id),
      UNIQUE KEY en_name (en_name),
      UNIQUE KEY category_value (category_value)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO d_d_category VALUES (1,1,'Book','图书',NULL,0,'1');
    INSERT INTO d_d_category VALUES (2,1,'Novel','小说',NULL,1,'1.2');
    INSERT INTO d_d_category VALUES (3,2,'Youth','青春',NULL,1,'1.3');
    INSERT INTO d_d_category VALUES (4,3,'Humanity And Social Science','人文社科',NULL,1,'1.4');
    INSERT INTO d_d_category VALUES (5,4,'Management','管理',NULL,1,'1.5');
    INSERT INTO d_d_category VALUES (6,5,'Children','少儿',NULL,1,'1.6');
    INSERT INTO d_d_category VALUES (7,6,'Foreign Language','外语',NULL,1,'1.7');
    INSERT INTO d_d_category VALUES (8,7,'Computer','计算机',NULL,1,'1.8');
    INSERT INTO d_d_category VALUES (9,1,'Chinese Contemporary Novel','当代小说',NULL,2,'1.2.9');
    INSERT INTO d_d_category VALUES (10,2,'Chinese Modern Novel','近现代小说',NULL,2,'1.2.10');
    INSERT INTO d_d_category VALUES (11,3,'Chinese Classical  Novel','古典小说',NULL,2,'1.2.11');
    INSERT INTO d_d_category VALUES (12,4,'Four Classic Novels','四大名著',NULL,2,'1.2.12');
    INSERT INTO d_d_category VALUES (13,5,'Translated Works','世界名著',NULL,2,'1.2.13');
    INSERT INTO d_d_category VALUES (14,1,'School','校园',NULL,3,'1.3.14');
    INSERT INTO d_d_category VALUES (15,2,'Love','爱情/情感',NULL,3,'1.3.15');
    INSERT INTO d_d_category VALUES (16,3,'Grow Up','叛逆/成长',NULL,3,'1.3.16');
    INSERT INTO d_d_category VALUES (17,4,'Fantasy','玄幻',NULL,3,'1.3.17');
    INSERT INTO d_d_category VALUES (18,5,'Original','原创',NULL,3,'1.3.18');
    INSERT INTO d_d_category VALUES (19,1,'Political','政治',NULL,4,'1.4.19');
    INSERT INTO d_d_category VALUES (20,2,'Economic','经济',NULL,4,'1.4.20');
    INSERT INTO d_d_category VALUES (21,3,'Law','法律',NULL,4,'1.4.21');
    INSERT INTO d_d_category VALUES (22,4,'Philosophy','哲学',NULL,4,'1.4.22');
    INSERT INTO d_d_category VALUES (23,5,'History','历史',NULL,4,'1.4.23');
    INSERT INTO d_d_category VALUES (24,1,'Commen Management','管理学',NULL,5,'1.5.24');
    INSERT INTO d_d_category VALUES (25,2,'Strategic Management','战略管理',NULL,5,'1.5.25');
    INSERT INTO d_d_category VALUES (26,3,'Marketing','市场营销',NULL,5,'1.5.26');
    INSERT INTO d_d_category VALUES (27,4,'Business History','商业史传',NULL,5,'1.5.27');
    INSERT INTO d_d_category VALUES (28,5,'E-Business','电子商务',NULL,5,'1.5.28');
    INSERT INTO d_d_category VALUES (29,1,'0-2','0-2岁',NULL,6,'1.6.29');
    INSERT INTO d_d_category VALUES (30,2,'3-6','3-6岁',NULL,6,'1.6.30');
    INSERT INTO d_d_category VALUES (31,3,'7-10','7-10岁',NULL,6,'1.6.31');
    INSERT INTO d_d_category VALUES (32,4,'11-14','11-14岁',NULL,6,'1.6.32');
    INSERT INTO d_d_category VALUES (33,5,'Child Literature','儿童文学',NULL,6,'1.6.33');
    INSERT INTO d_d_category VALUES (34,1,'English','英语',NULL,7,'1.7.34');
    INSERT INTO d_d_category VALUES (35,2,'Japanese','日语',NULL,7,'1.7.35');
    INSERT INTO d_d_category VALUES (36,3,'Korean','韩语',NULL,7,'1.7.36');
    INSERT INTO d_d_category VALUES (37,4,'Russian','俄语',NULL,7,'1.7.37');
    INSERT INTO d_d_category VALUES (38,5,'German','德语',NULL,7,'1.7.38');
    INSERT INTO d_d_category VALUES (39,1,'Computer Theory','计算机理论',NULL,8,'1.8.39');
    INSERT INTO d_d_category VALUES (40,2,'Database','数据库',NULL,8,'1.8.40');
    INSERT INTO d_d_category VALUES (41,3,'Programming','程序设计',NULL,8,'1.8.41');
    INSERT INTO d_d_category VALUES (42,4,'Artificial Intelligence','人工智能',NULL,8,'1.8.42');
    INSERT INTO d_d_category VALUES (43,5,'Computer Examination','计算机考试',NULL,8,'1.8.43');JAVABEAN里的代码package org.whatisjava.dangdang.domain;import java.util.List;public class Category implements java.io.Serializable { // Fields
    public static int BOOK_CAT = 1; private Integer id; private Integer turn; private String enName; private String cnName; private String abridgeName; private Integer parentId; private String categoryValue; private List<?> subCategory; // Constructors public List<?> getSubCategory() {
    return subCategory;
    } public void setSubCategory(List<?> subCategory) {
    this.subCategory = subCategory;
    } /** default constructor */
    public Category() {
    } /** minimal constructor */
    public Category(String enName, String cnName, Integer parentId) {
    this.enName = enName;
    this.cnName = cnName;
    this.parentId = parentId;
    } /** full constructor */
    public Category(Integer turn, String enName, String cnName,
    String abridgeName, Integer parentId, String categoryValue) {
    this.turn = turn;
    this.enName = enName;
    this.cnName = cnName;
    this.abridgeName = abridgeName;
    this.parentId = parentId;
    this.categoryValue = categoryValue;
    } // Property accessors public Integer getId() {
    return this.id;
    } public void setId(Integer id) {
    this.id = id;
    } public Integer getTurn() {
    return this.turn;
    } public void setTurn(Integer turn) {
    this.turn = turn;
    } public String getEnName() {
    return this.enName;
    } public void setEnName(String enName) {
    this.enName = enName;
    } public String getCnName() {
    return this.cnName;
    } public void setCnName(String cnName) {
    this.cnName = cnName;
    } public String getAbridgeName() {
    return this.abridgeName;
    } public void setAbridgeName(String abridgeName) {
    this.abridgeName = abridgeName;
    } public Integer getParentId() {
    return this.parentId;
    } public void setParentId(Integer parentId) {
    this.parentId = parentId;
    } public String getCategoryValue() {
    return this.categoryValue;
    } public void setCategoryValue(String categoryValue) {
    this.categoryValue = categoryValue;
    }}参考一下吧