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 に答える