小弟简要描述一下自己的做法.
create table car(carid number(8),carname varchar2(256));
insert into car(carid,carname) values(1,'奔驰');create table property(p_id number(8),p_name varchar2(512));
insert into property(p_id,p_name)values(1,'价格');create table desc_score(ds_id number(8),desc_ varchar2(128),score number(3));
insert into desc_score(ds_id,desc_,score)values(1,'高',5);create table property_desc(pd_id number(16),p_id number(8),ds_id number(8));--(id,属性编号,相关评价描述)
insert into property_desc(1,1,1);create table value_class(class_id number(3),class_name varchar2(128));
insert into value_class(class_id,class_name)values(1,'一级评价属性');create table propertype_class(pc_id number(12),p_id number(8),class_id number(3));
insert into perperty_class(p_id,class_id)values(1,1,1);--(id,属性编号,所在等级)
//以上是系统管理者定义的基本数据.
create table car_property(carid number(8),pc_id number(12),pd_id number(16));
//用户评价数据表请赐教!

解决方案 »

  1.   

    谢谢 weiwenking(伟文) 兄弟指点!
         我确认一下,你的意思是:建立、维护一些属性的基础数据表,以属性从属关系表表示其调用关系。这是一种常用也是很好的方法。
         当然这种想法我之前想过,但感觉得出有两个缺点:
               1.表property_desc,特别是表car_property数据两会不可想象的大,因为我们的产品种类很多。当然这些交给Oracle应该问题不大。================可以较少考虑
               2.另外,一旦出现这样的情况:我评价“奔驰”仅用“性价比”属性,而“性价比”评价“高、中、低”那么我可能设置“价格”的“高”得(100分)、“中”(60)........
                 一段时间后,我们要评价“宝马”,此时用了3个属性“价格”、“外观”、“性价比”。这个时候“性价比”在评价体系中所占比例改变了(30分)。每评价一次都能做得很顺,但是一旦改完后,我调出“奔驰”的评价历史页面,那么它由100分变成了30分。原本提倡买,现在查到历史纪录,数据告诉我们当时我们应该极力反对!在这里我自己想改进一下,如果我在属性添加过程中同时维护进去“评分值”历史纪录也许能解决。
              要考虑的问题太多了,有点心虚。欢迎各位讨论,更期待做过这样的数据库开发的朋友不吝赐教!