2011-01-09 2 views
0

나는 (적어도 나를 위해) 힘든 결정을 겪고 있습니다. ...DB 또는 응용 프로그램 수준에서 국가/지역 이름을 채워야합니까?

내 웹 사이트에는 선택한 국가에 따라 도시 목록과 드롭 다운 목록에있는 국가 목록이 있습니다. 때문에 등록 양식에, 그러나

CREATE TABLE Country 
(
    countryID - PK 
    countryName - FK 
); 


CREATE TABLE City 
(
    cityID - PK 
    countryID - FK 
    cityName 
); 

CREATE TABLE Register 
(
    registerID - PK 
    cityID - FK 

) 

, 이것은 국가/도시에서 기록을 검색뿐만 아니라 등록에 기록을 삽입 할 때 코딩 PHP 백 엔드에 약간의 복잡성을 추가 할 수 있습니다 : I는 다음과 같이 데시벨 수준에서 목록을 채우는 결정 사용자는 도시 목록 이름에 도시 이름을 표시하지 않으므로 사용자는 cityID를 볼 수 없으므로 선택된 cityName 등을 기반으로 cityID를 가져와야합니다. 따라서 고정 된 드롭 다운 목록에 국가 및 도시 목록을 응용 프로그램 수준에 넣어야합니다. 등록 표 모양을 다음과 같이 작성하십시오.

CREATE TABLE Register 
(
    registerID - PK 
    cityName 
) 

cityName은 우리가 조인하거나 여러 표를 호출하지 않고 직접 삽입됩니다. 도시에 대한 특정 ID를 얻을 수 있도록 cityName 등을 가져올 수 있습니다.

회원 테이블과 게시/게시 테이블 간의 관계 설정과 같은 중요한 테이블에서만 정상화됩니다. 멤버는 일대 다 관계의 여러 스레드를 가질 수 있습니다. 그렇지 않은 경우 국가 목록과 같이 다중 가치와 관련된 사항은 간결함과 랩을 위해 DB 수준에서 고려되지 않습니다.

당신은 어떻게 생각하십니까? 조언 ...

답변

1

데이터의 성격에 따라 데이터베이스 모델이 달라질 수 있습니다. 프런트 엔드 문제가 아닙니다.

도시를 드롭 다운 목록에로드하지 않는 이유는 무엇입니까? 표시 텍스트 = cityName을 설정하십시오. 값 = cityID를 설정하십시오.

0

국가 이름/id를 요소로 사용하고 도시 이름을 자식 요소로 정의하는 것이 좋습니다. 그것은 그것을 편집/XML 데이터를 읽을 수 있습니다. 이 점을 고려하고 싶은지 확실하지 않습니다.

1

잘 모르겠습니다. 질문의 문안을 완전히 이해하고 있지만 질문의 제목에 답하기 위해 데이터베이스에 국가 이름을 넣었습니다. 국가/도시는 때때로 이름이 변경됩니다.

관련 문제