2012-11-28 3 views
0

사용자 및 제품 테이블이 두 개인 관계형 데이터베이스를 만들고 싶습니다. 각 테이블의 각 항목은 두 번째 테이블의 많은 항목과 관련 될 수 있습니다. 다음두 테이블 간의 다 대다 관계

내 현재 구현이다

두 메인 테이블 -을

->Users 
User ID 
UserInfo 

->Products 
Product ID 
ProductInfo 

두 가지 lookuptables

->UserToProduct 
UserID 
ProductID 

->ProductToUSer 
ProductID 
UserID 

제품에 대한 사용자의 관계가 추가 될 때마다, I 첫 번째 조회 테이블에 여분의 행을 추가하거나 그 반대의 경우도 마찬가지입니다.

올바른 방법인가요? 내가 참조 할 수있는 시나리오에 대한 표준 모델이 있습니까?

+1

어쩌면 당신은 단지 관계의 방향에 여분의 행을 가진 하나의 테이블 USER-PRODUCT가 필요합니까? – sbyd

+0

@ Gowtham 두 테이블을 가져야한다고 생각하기 때문에 유스 케이스를 설명 할 수 있습니까? 나는 ** 당신이 단지 하나의 테이블을 조인 할 필요가 있다는 것을 ** 알고 ** ** 당신이 필요/관계에 관련된 추가 메타 데이터를 추적하고 싶다고 생각합니다. 추가 메타 데이터가 무엇인지 전혀 알 수 없습니다. –

+0

@BrianDriscoll 간단한 사용 예 - 사용자 A 제품의 검색 방법을 원합니다. 첫 번째 표를 사용합니다. 두 번째 경우, 제품 A를 구매 한 사용자의 수를보고 싶기 때문에 두 번째 표를 검색합니다. – Gowtham

답변

3

두 개의 검색 테이블이 필요하지 않으므로 모두 users_products입니다. 멀리 자원, 거기 zillions, 그냥 구글 "많은"많은 데이터베이스 " 있습니다. 간단한 예로서, 이제 사람을 배치하는 것은 축구와 자동차를 소유 가정 해 봅시다 지금

products 
------------ 
id  info 
------------ 
1  car 
2  flute 
3  football 

users 
------------ 
id  info 
------------ 
10  bob 
20  tim 
30  manning 

:

UPDATE이 데이터를 고려한다. 은 플루트와 축구를 소유하고 있습니다. 이제 조회 표가 있습니다.

users_products 
---------------------- 
user_id product_id 
---------------------- 
    20   2 
    20   3 
    30   3 
    30   1 

그게 전부입니다. 지금 당신은

건배에게 등, "사용자가 가지고있는 나에게 모든 차량을 준다" "나에게 차를 가지고 모든 사용자를 제공합니다", 또는 같은 쿼리를 수행 할 수

+0

그게 내가 생각한 것인데, 나는 그가 두 개인 관계를 원한다고 생각하니? –

+0

@Madbreaks 말씀해 주시겠습니까? 하나의 조회 테이블 만있는 경우 어떤 유형의 항목이 다른 유형의 항목과 관련되어 있는지 어떻게 알 수 있습니까? – Gowtham

+0

@ChristianVarga 두 테이블 사이에 bidrectional many-to-many 관계가 필요합니다. – Gowtham

1

당신은 정말 필요하거나 두 가지를 원하지 않는다 다른 룩업 테이블. 당신은 하나 (테이블 중 하나, UserToProduct 또는 ProductToUser, 괜찮을 것이다)해야합니다. 찾아보기 테이블의 기본 키는 ProductID와 UserID로 구성된 복합 키 여야합니다.

+0

내가 말했듯이. : D – Madbreaks

+0

내 게시물을 게시 한 후 답변보기 ...분명히 당신은 더 빠른 타이피스트입니다. –

+0

복합 키는 정확히 무엇입니까? 관계의 방향을 나타 내기 위해 여분의 열을 사용하는 @sbyd 방법은 훌륭하게 들립니다. – Gowtham