0

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

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');

用户 1 上传一张图片,它可以被评为 1,2 或 3。然后用户 2 将图片评分为 2,u3 将图片评分为 3。记录每个评分是否需要 3 列,我是否需要 3 行来记录每个用户评分对于图片,即

user_id pic_id  vote_1  vote_2   vote_3
u1      pic_1           u2       u3

如果有超过 2 个用户评分,即 user4 评分 2 和 user5 评分 3 怎么办。如何存储这些数据并计算聚合?

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

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

4

1 回答 1

0

使用以下字段创建表“评分”:

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

我建议将 user_id 和 pic_id 设置为组合主键。

在这张桌子上做所有的计算,你应该没有空间问题。

于 2013-03-05T21:34:29.470 回答