안드로이드 개발 질문/답변
(글 수 45,052)
지금 하려고 하는 일은 제 MAP 어플에서 검색창에 이름을 입력하면 마커로 표시되게 하는 간단한 작업입니다.
각 위치의 정보는 서버측 데이터 베이스에 있고요.. PHP 로 검색 키워드를 받으면 데이터베이스에서 결과를 받아 XML로 리턴 해서 어플에서 파싱하는 그런 형태 입니다. 사용자는 목적지를 검색 창에서도 할수 있고요 리스트 뷰에서도 직접 선택할수 있습니다. 리스트 뷰에서는 "building", "offices", " restaurant" 이런 형식으로 보여 집니다... 지금 데이터 베이스 모델링을 하는중인데..좀 힘듭니다.. 2가지 방법중에 고민중입니다. 상황은 사용자가 정확한 목표지점의 이름을 모르고 있는 상황에서 목표지점의 이름중 한 단어를 검색할경우 의 효율성입니다.
첫번째 방법..
facilities table
-------------------------------------------------------------------------------------------------
f_id name latitude logitude call web detail
1 university center - - - - -
2 university spar - - - - -
3 universirty house - - - - -
4 law - - - - -
5 computer science - - - - -
6 avanti - - - - -
----------------------------------------------------------------------------------------------------
keyword table link table
------------------------------------------- ------------------------------------------------
k_id name k_id f_id
1 university 1 1
2 center 1 2
3 restaurant 1 3
4 department 2 1
-------------------------------------------- 3 6
4 4
--------------------------------------------
위와 같이 keyword 데이블을 만듭니다. link 테이블을 이 두 기본키들을 연결 시켜주고요
예를 들어 사용자가 "university"를 검색창에 쓰면 PHP 는 1,2,3,번의 정보를 xml 형시으로 리턴하는 형식입니다.
리스트 뷰에서 사용자가 "restaurant"를 클릭했을 경우 6번 이 리스트 뷰에 나오는 형식입니다.
아마 sql 은 키워드 테이블에서 name=university 이것의 k_id와 f_id가 같은 것을 찾는것입니다.
두번째 방법은
한테이블에 모드 모았을때 입니다.
facilities
----------------------------------------------------------------------------------------------------------------------------------------------------
id name type lat lng call web detail
1 university center building - - - - -
2 university spar retail - - - - -
3 computer science department - - - - -
---------------------------------------------------------------------------------------------------------------------------------------------------
이경우에 만약 사용자가 "university" 를 검색했을때 1,2 번이 포함됩니다. 여기서
만약제가 select * from facilities where name like '%university%' or type = 'university'
이런 형식으로 university 가 앞뒤로 들어가는 name 을 요구하면 효율성면 즉 속도면 에서 첫번째 모델링 보다 많이 떨어지는지요..
record 가 아주 많았을때 가정하 에 입니다. 그리고 리스트 뷰에서 building 을 선택 하면 type이 building 인것을 모두 반환 합니다..
누가 그러는데 두번째는 모든 엔트리를 비교 하기 때문에 오래 걸릴꺼라 하던데요...사실 인지요...
각 위치의 정보는 서버측 데이터 베이스에 있고요.. PHP 로 검색 키워드를 받으면 데이터베이스에서 결과를 받아 XML로 리턴 해서 어플에서 파싱하는 그런 형태 입니다. 사용자는 목적지를 검색 창에서도 할수 있고요 리스트 뷰에서도 직접 선택할수 있습니다. 리스트 뷰에서는 "building", "offices", " restaurant" 이런 형식으로 보여 집니다... 지금 데이터 베이스 모델링을 하는중인데..좀 힘듭니다.. 2가지 방법중에 고민중입니다. 상황은 사용자가 정확한 목표지점의 이름을 모르고 있는 상황에서 목표지점의 이름중 한 단어를 검색할경우 의 효율성입니다.
첫번째 방법..
facilities table
-------------------------------------------------------------------------------------------------
f_id name latitude logitude call web detail
1 university center - - - - -
2 university spar - - - - -
3 universirty house - - - - -
4 law - - - - -
5 computer science - - - - -
6 avanti - - - - -
----------------------------------------------------------------------------------------------------
keyword table link table
------------------------------------------- ------------------------------------------------
k_id name k_id f_id
1 university 1 1
2 center 1 2
3 restaurant 1 3
4 department 2 1
-------------------------------------------- 3 6
4 4
--------------------------------------------
위와 같이 keyword 데이블을 만듭니다. link 테이블을 이 두 기본키들을 연결 시켜주고요
예를 들어 사용자가 "university"를 검색창에 쓰면 PHP 는 1,2,3,번의 정보를 xml 형시으로 리턴하는 형식입니다.
리스트 뷰에서 사용자가 "restaurant"를 클릭했을 경우 6번 이 리스트 뷰에 나오는 형식입니다.
아마 sql 은 키워드 테이블에서 name=university 이것의 k_id와 f_id가 같은 것을 찾는것입니다.
두번째 방법은
한테이블에 모드 모았을때 입니다.
facilities
----------------------------------------------------------------------------------------------------------------------------------------------------
id name type lat lng call web detail
1 university center building - - - - -
2 university spar retail - - - - -
3 computer science department - - - - -
---------------------------------------------------------------------------------------------------------------------------------------------------
이경우에 만약 사용자가 "university" 를 검색했을때 1,2 번이 포함됩니다. 여기서
만약제가 select * from facilities where name like '%university%' or type = 'university'
이런 형식으로 university 가 앞뒤로 들어가는 name 을 요구하면 효율성면 즉 속도면 에서 첫번째 모델링 보다 많이 떨어지는지요..
record 가 아주 많았을때 가정하 에 입니다. 그리고 리스트 뷰에서 building 을 선택 하면 type이 building 인것을 모두 반환 합니다..
누가 그러는데 두번째는 모든 엔트리를 비교 하기 때문에 오래 걸릴꺼라 하던데요...사실 인지요...
like '%university%' 문의 문제점은 속도 부분의 문제도 있습니다만 CPU 부하가 크다는 점입니다. 사용자가 적었을때는 상관없지만 많아지면 많아질수록 부담을 안고 가시게 될겁니다. 물론 서버 바꿔주면 해결됩니다 ^^;