有以下几个类,
class Animal {
public int quantity ; // 重量
};class Human {
public String name;
public String nationality;
public int age;
};class Panda {
public int healthyState;
};对于 Human , Panda,(未来还有可能其它的派生), 我要把对象存储到数据库中,
问题是:
如何设计表?
下列两种方式哪种更合理?设计1:
用1个表
Table_For_All_Type字段名    类型(略)  约束(略)  备注
quantity
name                              对Human有意义
nationality                       对Human有意义
healthyState                      对Panda,解释为healthyState,对于Human解释为age设计2:
用两个表
表一 : Table_For_Human字段名    类型(略)  约束(略)  备注
quantity
name                              
nationality                     表二 :         Table_For_Panda字段名    类型(略)  约束(略)  备注
quantity
healthyState似乎第二种设计比第一种设计好些(可扩展性好些),你的意见呢?是不是有更好的设计,来支持继承?(这里在基类中的quantity想复用)。

解决方案 »

  1.   

    建议用设计2:
    用两个表
    表一 : Table_For_Human
    字段名 类型(略) 约束(略) 备注
    quantity
    name   
    nationality   
    表二 : Table_For_Panda
    字段名 类型(略) 约束(略) 备注
    quantity
    healthyState如同你所说,可扩展性好些,两表需要某字段进行关联,例如:quantity.
      

  2.   

    用两个表,这两大类很少共性
    表一 : Human
    字段名 类型(略) 约束(略) 备注
    quantity
    name   
    nationality   
    表二 : Animal 
    quantity
    healthyState。


    type:--》animal的type
    。可以将字段设为可空,插入时插入相关字段和type
      

  3.   

    表一 : Table_For_Animal (存放共同属性)
    字段名
    id
    quantity
    type (鉴别器)表二 : Table_For_Human (存放Human特殊属性)
    字段名
    Animal_id
    name   
    nationality   
    age表三 : Table_For_Panda (存放Panda特殊属性)
    字段名
    Animal_id
    healthyState