2017-02-14 1 views
-2

나는이 질문을하는 방법을 모르므로 실제로 Google에 연결할 수는 없지만 쉽게 대답 할 수 있습니다.사용자 테이블과 다른 테이블을 연결하는 방법

사용자가있는 테이블과 X 개의 행이있는 테이블이 있습니다. 내가 뭘 찾고 x 행에 모든 사용자를 관련시킬 수있을 것입니다. 동시에 행에 관련된 많은 사용자가있을 수 있습니다. 두 가지 모두입니다.

+0

당신이 찾고있는 것을 "외래 키"라고합니다. – David

+0

와 @David가 외래 키가 필요합니다. – SaggingRufus

+0

@SaggingRufus 일종의 명백한 조인 부분입니다. 외래 키가 어떤 것인가를 조인하는 방법은 무엇입니까? –

답변

1

다른 테이블에 "외래 키"를 넣습니다.

Users 
---------- 
ID (int, PK) 
Name (varchar) 
etc. 

그런 다음 다른 테이블에서이 테이블에 다시 가리키는 열 것 :의 당신이 Users 테이블이 있다고 가정 해 봅시다

Widgets 
---------- 
ID (int, PK) 
UserID (int, FK) <-- this is the foreign key 
etc. 

생성 방법의 구문이 외래 키 관계 것 사용중인 데이터베이스에 따라 다르면 문서에 있습니다. 그런 외래 키에는 다양한 옵션이 있지만 중요한 점은 데이터에서 관계형 무결성을 유지한다는 것입니다. 따라서 WidgetsUserID이 포함 된 레코드를 삽입하려고하면 데이터를 관련시키기 위해 IDUsers이 있어야하므로 오류가 발생합니다. 이 관계는 장소에 있으면

는 데이터를 조회하는 것은 간단하다

SELECT * FROM Users 
INNER JOIN Widgets 
    ON Users.ID = Widgets.UserID 

편집 : 당신이 많은에 "많은 찾고있는 것처럼 아래의 의견을 바탕으로, 그것은 소리 "관계. 같은 개념으로 연결하기위한 중간 테이블 만 있으면됩니다. 이런 식으로 뭔가 :

Users 
---------- 
ID (int, PK) 
Name (varchar) 
etc. 

Widgets 
---------- 
ID (int, PK) 
etc. 

UserWidgets 
---------- 
ID (int, PK) <-- optional, the PK could be a composite of the FKs 
UserID (int, FK) 
WidgetID (int, FK) 

지금 어떤 사용자와 어떤 위젯이 UserWidgets 테이블에 더 많은 기록을 추가하는 방법으로, 다른 임의의 수에 연결할 수 있습니다. 이 테이블은 관계이기 때문에 관계를 보유합니다.

쿼리는 다른 가입 그냥 :

SELECT * FROM Users 
INNER JOIN UserWidgets 
    ON Users.ID = UserWidgets.UserID 
INNER JOIN Widgets 
    ON UserWidgets.WidgetID = Widgets.ID 
+0

예,하지만 위젯이 1 명 이상의 사용자와 관련이있을 수 있습니다. 어떻게하면 될까요? –

+0

@ pato.llaguno : 지정된 내용과 다릅니다. 이 관계가 정확히 무엇입니까? 사용자가 많은 위젯을 가질 수 있고 위젯이 많은 사용자를 가질 수 있습니까? – David

+0

예, 두 가지 방법입니다. –

0

당신은 기본적으로 정규화에 대해 얘기하고는 관계를 해결하기 위해 여기에 외래 키 제약 조건을 사용할 수 있습니다.

예 : EMP (MANY) 및 DEPT (ONE) [한 부서에 많은 직원이있는 경우] EEP 테이블에 외래 키로 DEPT_ID (DEPT 테이블의 부서 행을 식별 함)를 넣습니다.

유스 케이스와 유사한 해결책을 적용 할 수 있습니다.

관련 문제