2013-03-26 2 views
0

블로그 테이블과 위치 테이블이 두 개인 테이블이있는 MySQL 데이터베이스를 만들고 있습니다. 내가 한 것은 blogs에있는 필드로 쉼표로 구분 된 위치 ID 문자열입니다 : 1,5,7. 그런 다음 PHP 스크립트에서 해당 문자열을 분해하고 위치를 얻을 수 있습니다.MySQL 일대 다 관계. 다른 테이블 또는 PHP 처리?

MySQL 쿼리를 사용하여 위치의 모든 블로그를 찾고 싶을 때 문제가 발생합니다.

관계에 대한 다른 테이블을 만들어야합니까? 어쩌면 블로그 1 위치 1, 블로그 1 위치 5, 블로그 1 위치 7. 이전 예제를 나타내는 3 개의 행. 그렇게하면 쿼리의 해당 위치에있는 블로그 만 선택하게됩니다. 다른 방법으로는 모든 블로그를 선택하고 각 블로그를 하나씩 확인해야합니다.

더 빠르고 깨끗하다고 ​​생각하십니까?

감사합니다.

+1

예, 다른 교차 표를 만들어야합니다. 사실, 그것은 m : n 관계처럼 보입니다 (위치 X는 하나 이상의 블로그에서 사용할 수있는 것처럼 보입니다). 그렇지 않으면'location' 테이블을 사용하여 하나의 블로그 항목과 링크시킬 수 있어야합니다. – raina77ow

답변

0

관계형 데이터베이스 설정에서이 작업을 수행하는 가장 좋은 방법은 블로그와 위치 간의 관계를 처리하기 위해 3 번째 테이블 (때로는 교차 테이블이라고도 함)입니다. 당신이 기술하는 것은 다 - 대 - 다 관계 (또는 양방향으로 진행되는 일대 다 관계)입니다.

Here은 나보다 조금 더 잘 설명하는 링크입니다.

+0

첫 번째로, 링크로, 나는 대답을 선택합니다. 고맙습니다! 당신은 괜찮습니다. 나는 일대 다와 다 대다 (many-to-many)를 착각했습니다. 최선의 방법으로 이것을 배우는 법을 배우고 싶습니다. – Ryckes

+0

일단 테이블을 디자인하고 데이터로 채우면 꽤 쉽게 참여하여 필요한 데이터를 얻을 수 있어야합니다. BlogLocationID (UNIQUE), BlogID, LocationID - 테이블에 실제로 3 개의 필드가 있어야하므로 Blog_Location의 고유 행을 식별하기 위해 기본 키를 자동 인크루트 정수로 사용하는 것이 좋습니다. 귀하의 데이터는 아마이 조합은 날짜 필드 BlogLocationDate를 사용할 수 있습니다 (하지만 익숙하지 않은 상태에서는 잘 모르겠습니다). – Josh

+0

쿼리를 작성하려고합니다. 내가 원하는 것은 블로그 목록을 각 블로그 옆에, 위치 (그들의 위치) 목록을 그들의 이름으로 얻는 것입니다. 그래서, 나는 이름과 ID (단순한 경우), 이름과 ID를 가진 위치 테이블, 그리고 블로그와 위치 (그리고 당신이 제안한 이드)가있는 접합 테이블을 가진 블로그 테이블을 가지고있다. 단일 쿼리에서 이름, ID 및 위치 목록이있는 블로그를 모든 행에서 어떻게 얻을 수 있습니까? 고맙습니다! tblBlog B INNER * FROM 을 선택하면 – Ryckes

2

다른 테이블이 깨끗합니다. 사실 그것은 관계형 데이터베이스의 기본이기 때문에 유일한 선택입니다.

0

관계를 나타내는 세 번째 테이블은 실제로 갈 수있는 유일한 방법입니다.