2014-01-30 2 views
1

Play! 뼈대. Play는 Ebean을 ORM으로 사용합니다. 지금은 사용자가 제품을 평가할 수있는 등급 시스템을 만들고 있습니다. 사용자는 제품을 한 번만 평가할 수 있습니다. RATING 테이블을 디자인하는 가장 좋은 방법에 대해 궁금한 내용이었습니다.모범 사례 : 기본 키 또는 고유 제한으로 외래 키

  1. 사용 USER_ID 및 PRODUCT_ID는 기본 키 또는
  2. 사용으로 별도의 ID는 기본 키로서가 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

user_id 또는 product_id가 NULL 인 등급 튜플의 _meaning_은 무엇입니까? – wildplasser

+0

@wildplasser 여기서 null을 어디에서 얻습니까? OP가 null 값 이름을 허용 할 것이라고 생각하십니까? – Paparazzi

답변

2

, 감사합니다. 둘 다 똑같은 임무를 수행하므로 왜 당신의 삶이 복잡합니까? 다음 내용을 읽어보십시오. KISS

+0

감사합니다. 좋은 발음입니다. – nick78