2014-01-30 6 views
1

Я реализую магазин, используя Play! фреймворк. Игра использует Ebean как ORM. Сейчас я создаю систему оценки, в которой пользователь может оценивать продукты. Пользователь может оценивать продукт только один раз. Мне просто интересно узнать, как создать таблицу RATING.Лучшая практика: внешние ключи как первичные ключи или уникальное ограничение

  1. Использования user_id и product_id в качестве первичного ключа или
  2. Использовать индивидуальный идентификатор в качестве первичного ключа Заданного ограничения уникальности на внешних ключах user_id и PRODUCT_ID

Каковы плюсы/минусы?

User 
--------------------- 
id (PK) 
name 
... 
--------------------- 

Product 
--------------------- 
id (PK) 
name 
... 
--------------------- 

Rating 
--------------------- 
user_id (FK) 
product_id (FK) 
rating 
comment 
PK(user_id, product_id) 

OR: 

Rating 
--------------------- 
id (PK) 
user_id (FK) 
product_id (FK) 
rating 
comment 
UNIQUE (user_id, product_id) 

Спасибо,

Ник

+0

Что было бы целью идентификатора рейтинга? – Paparazzi

+0

Что было бы _meaning_ кортежа рейтинга с user_id или product_id равным NULL? – wildplasser

+0

@wildplasser Откуда вы получаете null от этого? Вы действительно думаете, что OP будет разрешать имя нулевого значения? – Paparazzi

ответ

2

Первый вы перечислили, потому что это проще. Оба освобождают одну и ту же задачу, поэтому зачем усложнять жизнь? Прочтите следующее: KISS

+0

Спасибо, звучит хорошо – nick78

Смежные вопросы