2013-03-05 3 views
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'); 

User1 загружает изображение и он может быть оценен 1,2, или 3. Тогда user2 ставки ПИК как 2 и u3 ставок Pic 3. существуют 3 колонки, необходимые для регистрации каждого рейтинга, и мне нужно 3 строки, чтобы войти каждый рейтинг пользователей для картины, т.е.

user_id pic_id vote_1 vote_2 vote_3 
u1  pic_1   u2  u3 

Что делать, если есть более 2 рейтингов пользователей, т. е. если тарифы user4 rate 2 и user5 3. Как хранить эти данные и вычислять ggregate?

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

Это займет огромное пространство. Могу ли я использовать запись для хранения значений в форме массива и вычислить совокупность, извлекая результаты из набора?

ответ

0

создать таблицу «рейтинги» со следующими полями:

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

Я бы посоветовал сделать на user_id и pic_id комбинированный первичный ключ.

Выполняйте все ваши расчеты на этом столе, и у вас не должно быть проблем с пространством.

+0

Спасибо. Тем не менее эта таблица должна содержать разные рейтинги, предоставленные пользователями для pic_id, т. Е. Если 10 пользователей оценивают одно изображение, то это означает 10 строк! Столбцы будут только user_id, pic_id, рейтинг (u1, p1,1; u2, p1,2; u3, p1,3; u4, p1,1). Если оцениваются 20 изображений, то для хранения рейтингов это означает 200 строк, разве нет эффективного решения? – user1940212

+0

Правда, но поскольку эта таблица состоит только из целых чисел, это не будет проблемой с файлами. Перезаписывая это с помощью хранения массивов или добавления нескольких столбцов, будет возрастать сложность, добавить дополнительные накладные расходы и быть менее динамичными в долгосрочной перспективе. – Oli

+0

Возможно, другие пользователи могут предложить альтернативы, но, на мой взгляд, это лучшее решение! – Oli