2014-10-24 3 views
0

SQLite의 두 테이블 사이에 N : M 관계를 만드는 것이 혼란 스럽습니다.SQLite에서 N : M 관계 만들기

내 테이블은 내 블로그의 두 구성 요소 인 "게시물"과 "태그"입니다.

포스트 테이블의 태그 열을 태그 테이블에 연결하여 태그, ID 및 설명이있는 태그 테이블에 정의 된 여러 태그를 하나의 데이터베이스 행만 사용하여 게시물에 연결할 수 있습니다. 게시물 표의 태그 열에

N : M 관계를 사용한다고 들었을 때부터 여러 가지를 시도했습니다. SQL을 처음 사용하기 전에 사용하지 않은 것입니다. 해야 할 일이 무엇인지 이해합니다. "태그"열을 태그 테이블로 가리 키지 만 실행 방법을 모르겠습니다.

나는이 링크들에 따라 외래 키, 인덱스 등을 시도했지만 내가 무엇을해야하는지 확신 할 수 없다. 비록 그 대답이이 페이지들에서 나의 코 바로 아래에 있음을 인정하지만.

http://www.singingeels.com/Articles/Understanding_SQL_Many_to_Many_Relationships.aspx

SQLite many-to-many relationship?

단순히 FOREIGN KEY (태그)이 될 예정이 게시물 테이블에 태그 (ID)를 참고 문헌? 게시물 테이블에서 "태그"에 대해 여러 항목을 사용하는 방법을 알 수는 없지만.

은 어떤 조언을 감사하고 나는 위해 (당신이 게시물과 태그에서 제외하고 별도의 테이블을 만들 필요가 많은 관계로 대부분의 경우,

Ilmiont

답변

1

을 시도하고 지금 자신을 교육을 계속하고있다 예 : posts 및 tags 사이의 관계를 저장하는 posts_tags). 이 테이블에는 post_id (posts.id에 대한 외래 키 참조) 및 tag_id (tags.id에 대한 외래 키 참조) 열이 있어야합니다. 예를 들어 id = 1 인 게시물의 ID가 1,2,3 인 태그가있는 경우

post_id | tag_id 
    1 | 1 
    1 | 2 
    1 | 3 

역방향 관계입니다. 당신이 ID를 사용하여 태그가 IDS 3,4,5와 기사가있는 경우 = 5 다음 표는

post_id | tag_id 
    3 | 5 
    4 | 5 
    5 | 5 

그것이

+0

감사합니다. 덕분에 더 잘 이해할 수있었습니다. 나는 그것을 시도 할 것이다. – Ilmiont

+0

당신을 환영합니다. – geoandri

+0

흠, 두려운 또 다른 질문이 있습니다. 관계에 데이터를 삽입하는 방법은 무엇입니까? 나에게 가장 확실한 것은 게시물 세부 정보를 삽입 한 다음 LAST_INSERT_ID()를 사용하여 태그/post_tags 테이블에 데이터를 추가하는 것이지만 실제로 작동할까요? – Ilmiont

1

이 일반적이라고 희망이 도움이 될 것 대다 관계 및 당신은 그 문구로 더 많은 예를 찾기 위해 더 나은 행운을 가질 것입니다.

다른 게시물과 마찬가지로 외부 키가있는 테이블과 태그가 필요하지만 더 빨리 연결할 수 있습니다. 끝에 foobar 테이블이 있음을 주목하십시오. 귀하의 경우에는 post_tags 테이블이 필요합니다. 그런 다음 해당 테이블은 게시물 (N)에 대해 여러 행을 가질 수 있으며 해당 테이블의 단일 게시물은 다른 태그 (M)를 가진 여러 행을 가질 수있어 N : M 관계를 갖게됩니다.