2012-03-04 2 views
0

사람, 장소 및 게시물을 저장하는 응용 프로그램을 작성합니다.Geolocation 및 데이터베이스 스키마

사람이 소식을 만들고 장소에 살고 게시물도 장소에 속할 수 있습니다.

게시물을 볼 때 애플리케이션을 사용하는 사용자는 작성한 게시물의 위치를 ​​볼 수 있습니다. 런던, 영국. 그런 다음 해당 위치를 클릭하고 그 위치에 게시 된 다른 게시물 목록을 볼 수 있습니다.

응용 프로그램의 홈 페이지에서 geolocation을 사용하면 현재 사용자의 위치가 표시되고 근처에 게시 된 게시물의 거품이 겹쳐서 표시되는 것을 볼 수 있도록지도를 표시하고 싶습니다. 게시하다.

enter image description here

모두 내가 데이터베이스를 구축 할 수있는 가장 좋은 방법을 알아 내기 위해 노력하고 말했다되고있다. 이것은 지금까지 내 머리 속에 내가 가지고있는 스키마입니다 :

**Posts** 
id 
title 
datetime 
content 
author_id 

**People** 
id 
firstname 
lastname 

**Places** 
id 
name 
lon 
lat 

당신이 게시물과 USER_ID 외부 키를 가진 사람들 사이의 관계가있다 볼 수 있듯이, 그러나 나는 또한 환경 사이의 관계를 구축 할 필요가 게시물과 사람,하지만 데이터가 반복되는 것을 원하지 않습니다. 런던에 런던에 두 번 저장되어 있습니다.

필자는 링커 테이블에 대해 생각해 보았지만 사람과 게시자의 ID가 동일 할 수 있으므로 지저분해질 수 있으므로 별도의 ID를 지정해야합니다.

누구나 그러한 앱을 제작하기위한 제안/권장 사항을 제공 할 수 있습니까? http://www.touristeye.com/London-p-1066

감사

+0

방법에 대해 단지 사람과 게시물 모두에서 장소에 대한 참조를 추가? 내가 읽었을 때 게시물에서 장소로, 그리고 게시물에 대해 다 대일 관계를 원하십니까? 단, 일관성을 유지하려면 이름을 그대로 사용하십시오! 두 번째 의견에 대한 – aweis

+0

은 - 당신이 위치 근처의 다른 것들에 대한 검색을 원하기 때문에 나는 그들이 데이터의 종류 optimzed하는 becuase 당신이, 공간 데이터베이스를 조사한다고 생각합니다. – aweis

+0

위치는 하나 이상의 게시물과 사람을 가질 수 있으므로 많은 관계를 가질 수 있습니다! – Cameron

답변

0

나는 당신의 장소 테이블 생각 :이 같은 사람이 어떻게 그렇게 확신하지 위치를 구축하기 위해 시간이 걸릴 것 같은

가 난 장소 테이블의 모든 데이터를 저장할 수 있어야 그렇지 않다. 예를 들어, 뉴욕과 같은 곳은 고유 한 위도/경도를 가질 것이라고 제안합니다. 이는 일부 응용 프로그램에서는 데이터를 분석 할 수 있지만 실제로는 그렇지 않습니다. 게시물의 위도와 경도를 지정하고 장소와 게시물 간의 관계를 모델링하는 것이 좋습니다. 그런 다음 장소에서 장소가 차지하고있는 일부 아이디어를 기록하는 데 필요한 속성을 유지하기 위해 장소를 수정합니다. 아마도 단순한 다각형 일 수도 있고, 아마도 좀 더 복잡 할 수도 있습니다.

장소에 대한 간단한 아이디어가 만족 스럽다면 즉, 모든 위도/경수 튜플이 한 곳 (예 : 런던)에만 있고 장소간에 흥미로운 관계가 없다면 (예 : 웨스트 민스터가 런던 내부에 있음) 외래 키에 의한 장소와 게시물 간의 관계를 모델링합니다. 그러나 이것은 한 장소 내의 모든 게시물에 동일한 위도/경도 튜플이 주어 졌음을 의미합니다. 이는 원하는 것이 아닐 수도 있습니다.

아마도 공간 데이터베이스에 접근하는 것을 구현하지 않으려하거나 (구현할 필요가 없기 때문에) 장소를 다시 모델링하지 못하게해야합니다. 코멘트

그것은 생각하는 너무 간단 후

편집은 '데이터의 중복은 나쁜 일이다'.하나, 나는 당신이 데이터를 복제하고 있다고 생각하지 않는다. 또 다른 이유는 당신 (또는 데이터베이스를 설계하는 다른 누군가)이 원할지도 모르는 이유들이다. 대체로 이러한 이유는 쿼리 성능과 관련이 있습니다. 그러나 문제에 의존 :

나는 게시물이 이루어되는 위치가 장소와 같은 일이 아니라고 생각합니다. 예를 들어, 작성한 내용에서 100 피트 떨어진 지점의 위도/경도를 기록하고 같은 위치에 매듭 짓습니다 (타임 스퀘어가 100 피트 이상인 것으로 추측합니다). 장소에 대한 간단한 개념이 있다면 외래 키를 사용하여 관계를 구현할 수 있습니다. 그러나 위도/경도 측면에서 장소의 정의는 그 안에 만들어진 게시물의 위치와 관계가 없습니다. Times Sq에서 작성한 모든 게시물의 위도/경도가 같으면 정보가 손실 될 수 있으므로 정확한 위치에 접하게됩니다.

그리고 정보를 잃는 것은 (물론, 그것을위한 좋은 이유가,하지 않는 한) 우리는 데이터베이스를 어떻게해야되지 않습니다 그 나쁜 일의 또 다른입니다.

+0

지도에서 위치를 표시하고 싶습니다. 예를 들어 정확한 데이터가 필요합니다. 타임 스퀘어, 뉴욕, 미국. 그러나 게시물 테이블 자체에 게시물에 대한 long 및 lat를 저장하는 중이라면 데이터를 거기서도 만들지 않는 한 어떻게 places 테이블에 다시 연결해야합니까? 하지만 복제하지 않습니다 그럼 어떻게 ... – Cameron

+0

당신은 당신이 게시물 기록 그에 DB 스키마가 있어야한다고 생각 무엇을 게시 할 수있는 긴/위도와 사용자가 어디 다른 게시물이 이루어지고있다 보여줄 것입니다 해당 게시물의 링크를 클릭 할 수 해당 영역 ... – Cameron

+0

'링크를 클릭하십시오'는 순수한 UI입니다. UI가 DB 디자인에 미치는 영향은 UI 디자인에 달려 있습니다. 그런 측면에서 어떤 계획을 세우지는 못 했으므로 여기서 도울 수는 없습니다. 귀하의 요구 사항이 명확하지 않다고해서 Places 데이터 구조의 디자인을 더 도울 수는 없습니다. 마지막으로,이 DB를 종이 한 장으로 디자인하지 않고 기존의 지역 기반 DB를 사용할 것입니다. 더 많은 도움이 필요하다면, MySQL과 PostGRES 모두 공간 확장이 있고 온라인으로 잘 문서화되어있는 문서를 참조하십시오. –

관련 문제