将多个评级存储在单个表格行中

时间:2013-03-05 21:26:01

标签: database database-design architecture

如何存储多个评级而不重复存储评级的行

create table pic_table
(user_id varchar2(10) not null,
 pic_id number not null,
 pic_snap bfile,
 rating number,
 constraint snp_pk primary key (pic_id));

insert into pic_table
values(u1,p1, bfilename('GIF_FILES', 'PIC_1'),'JPEG');

User1上传一张图片,它可以被评为1,2或3.然后user2将pic评为2,u3评级为pic 3.记录每个评级需要3列,我需要3行才能记录图片的每个用户评级,即

user_id pic_id  vote_1  vote_2   vote_3
u1      pic_1           u2       u3

如果有超过2个用户评级,即如果user4评级为2,用户5评级为3,该怎么办?如何存储这些数据并计算汇总数?

user_id pic_id    v_1   v_2 v_3
u1          pic_1       u2  u3
u1          pic_1       u4  u5

这将占用巨大的空间。我可以使用记录以数组的形式存储值,并通过从集合中提取结果来计算聚合吗?

1 个答案:

答案 0 :(得分:0)

使用以下字段创建表'评级':

user_id (int)
pic_id (int)
rating (int)

我建议将user_id和pic_id组合成一个主键。

在这张桌子上进行所有计算,你应该没有空间麻烦..