如对汽车进行评价打分,大类车型:奔驰、宝马、红旗、大众。。。。。。==主体
我们假设每款车评价三个方面:价格、质量、外形。。。。。==“一级评价属性”
而对于“价格”,我们有三个选择“高(5分)、中(3分)、低(0分)”
而对于“质量”,有“好(15分)、较好(10分)、一般(5分)、差(0分)”
而对于“外形”,有“漂亮(10分)、一般(5分)、差(0分)”
。。。。。。。。。。。。。===“二级评价属性”。
另一种表述:
对A、B、C等产品,它们分别有个数不同的属性a、b、c、d等,而对
每个a、b、c、d有1、2、3、4个数不同的几种级别的评价,每个级别对应一种评分。
要求:
若要使页面根据数据库内容动态生成(根据属性情况生成页面控件、内容等)评价完自动算出总分。估计要评价的产品数量极大(估计“主体”5000个以上,“一级评价属性”10到20个不等,“二级评价属性”2到5个不等)。速度与冗余都应考虑,数据库表应该如何设计?
另外,我于某一时间增加“一级评价属性”或某个“一级评价属性”的“二级评价属性”,随着其对应分值的变化,我如何能保证历史纪录能够回现历史?
您设计的大概调用流程是什么?
谢谢!
5 个解决方案
#1
小弟简要描述一下自己的做法.
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));
//用户评价数据表
请赐教!
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));
//用户评价数据表
请赐教!
#2
谢谢 weiwenking(伟文) 兄弟指点!
我确认一下,你的意思是:建立、维护一些属性的基础数据表,以属性从属关系表表示其调用关系。这是一种常用也是很好的方法。
当然这种想法我之前想过,但感觉得出有两个缺点:
1.表property_desc,特别是表car_property数据两会不可想象的大,因为我们的产品种类很多。当然这些交给Oracle应该问题不大。================可以较少考虑
2.另外,一旦出现这样的情况:我评价“奔驰”仅用“性价比”属性,而“性价比”评价“高、中、低”那么我可能设置“价格”的“高”得(100分)、“中”(60)........
一段时间后,我们要评价“宝马”,此时用了3个属性“价格”、“外观”、“性价比”。这个时候“性价比”在评价体系中所占比例改变了(30分)。每评价一次都能做得很顺,但是一旦改完后,我调出“奔驰”的评价历史页面,那么它由100分变成了30分。原本提倡买,现在查到历史纪录,数据告诉我们当时我们应该极力反对!在这里我自己想改进一下,如果我在属性添加过程中同时维护进去“评分值”历史纪录也许能解决。
要考虑的问题太多了,有点心虚。欢迎各位讨论,更期待做过这样的数据库开发的朋友不吝赐教!
我确认一下,你的意思是:建立、维护一些属性的基础数据表,以属性从属关系表表示其调用关系。这是一种常用也是很好的方法。
当然这种想法我之前想过,但感觉得出有两个缺点:
1.表property_desc,特别是表car_property数据两会不可想象的大,因为我们的产品种类很多。当然这些交给Oracle应该问题不大。================可以较少考虑
2.另外,一旦出现这样的情况:我评价“奔驰”仅用“性价比”属性,而“性价比”评价“高、中、低”那么我可能设置“价格”的“高”得(100分)、“中”(60)........
一段时间后,我们要评价“宝马”,此时用了3个属性“价格”、“外观”、“性价比”。这个时候“性价比”在评价体系中所占比例改变了(30分)。每评价一次都能做得很顺,但是一旦改完后,我调出“奔驰”的评价历史页面,那么它由100分变成了30分。原本提倡买,现在查到历史纪录,数据告诉我们当时我们应该极力反对!在这里我自己想改进一下,如果我在属性添加过程中同时维护进去“评分值”历史纪录也许能解决。
要考虑的问题太多了,有点心虚。欢迎各位讨论,更期待做过这样的数据库开发的朋友不吝赐教!
#3
还没解决啊!谁有好办法,或谈谈自己的经验
#4
下周结帖!欢迎指导!
#5
up
顶
顶
#1
小弟简要描述一下自己的做法.
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));
//用户评价数据表
请赐教!
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));
//用户评价数据表
请赐教!
#2
谢谢 weiwenking(伟文) 兄弟指点!
我确认一下,你的意思是:建立、维护一些属性的基础数据表,以属性从属关系表表示其调用关系。这是一种常用也是很好的方法。
当然这种想法我之前想过,但感觉得出有两个缺点:
1.表property_desc,特别是表car_property数据两会不可想象的大,因为我们的产品种类很多。当然这些交给Oracle应该问题不大。================可以较少考虑
2.另外,一旦出现这样的情况:我评价“奔驰”仅用“性价比”属性,而“性价比”评价“高、中、低”那么我可能设置“价格”的“高”得(100分)、“中”(60)........
一段时间后,我们要评价“宝马”,此时用了3个属性“价格”、“外观”、“性价比”。这个时候“性价比”在评价体系中所占比例改变了(30分)。每评价一次都能做得很顺,但是一旦改完后,我调出“奔驰”的评价历史页面,那么它由100分变成了30分。原本提倡买,现在查到历史纪录,数据告诉我们当时我们应该极力反对!在这里我自己想改进一下,如果我在属性添加过程中同时维护进去“评分值”历史纪录也许能解决。
要考虑的问题太多了,有点心虚。欢迎各位讨论,更期待做过这样的数据库开发的朋友不吝赐教!
我确认一下,你的意思是:建立、维护一些属性的基础数据表,以属性从属关系表表示其调用关系。这是一种常用也是很好的方法。
当然这种想法我之前想过,但感觉得出有两个缺点:
1.表property_desc,特别是表car_property数据两会不可想象的大,因为我们的产品种类很多。当然这些交给Oracle应该问题不大。================可以较少考虑
2.另外,一旦出现这样的情况:我评价“奔驰”仅用“性价比”属性,而“性价比”评价“高、中、低”那么我可能设置“价格”的“高”得(100分)、“中”(60)........
一段时间后,我们要评价“宝马”,此时用了3个属性“价格”、“外观”、“性价比”。这个时候“性价比”在评价体系中所占比例改变了(30分)。每评价一次都能做得很顺,但是一旦改完后,我调出“奔驰”的评价历史页面,那么它由100分变成了30分。原本提倡买,现在查到历史纪录,数据告诉我们当时我们应该极力反对!在这里我自己想改进一下,如果我在属性添加过程中同时维护进去“评分值”历史纪录也许能解决。
要考虑的问题太多了,有点心虚。欢迎各位讨论,更期待做过这样的数据库开发的朋友不吝赐教!
#3
还没解决啊!谁有好办法,或谈谈自己的经验
#4
下周结帖!欢迎指导!
#5
up
顶
顶