예 1 :"국가", "지방"및 "도시"테이블을 디자인하는 방법은 무엇입니까?
xTable: xTableID, CountryName, PovinceName, CityName
- 또는
예 2 :
Country: CountryID, CountryName
Province: ProvinceID, ProvinceName
City: CityID, CityName
질문 :
응용 프로그램 수준에서 국가,도 및 도시 목록을 채우고 예제 1 디자인을 사용 하시겠습니까? 또는 예 2에서와 같이 DB 수준에서 채워야합니까?
시는 선택한 지역 (있는 경우) 또는 국가 이름을 기반으로 표시됩니다. 선택한 국가에 따라 성 (있는 경우)이 표시됩니다. 지방은 한 국가에만 해당되며 도시는 한 지방/국가에만 해당됩니다. 많은 관계로 많은 아무도/그래서 난
참고 아래로 설계하지 : 모든 국가가 확실하게 도시를하지만 모든 국가가 지방의 이름을 갖게됩니다 없습니다.
Country: CountryID (PK), CountryName
Province: CountryID (PK - FK), ProvinceName
City: CountryID (PK - FK), CityName
나는 너의 것을 만나는 또 다른 제안을했다. ID, CountryID, ProvinceID, CityID 열이있는 새 테이블을 만듭니다. 나는 이것이 많은 관계를 충족시키는 것을 알고 있지만 다루기가 더 쉬워 보인다. 명시된 디자인에 대한 의견이 있으십니까? – user311509
나는 그것을 많이 좋아한다고 말할 수 없다. 귀하가 귀하의 사업체간에 엄격한 관계를 유지하는 것이 얼마나 중요한지에 달려 있습니다.테이블 디자인은 City가 여러 국가와 관련되는 것을 제한하지 않으며, 프로그래밍 방식으로 수행해야합니다. 그러면 오류가 발생할 수 있습니다. 엄격한 관계를 유지하기 위해 DB를 사용하려면이 방법이 아닙니다. 다른 한편, 만약 당신이 방금 일부 코드를 실행하고 다음과 아마 잘 작동합니다 더러운 수정에 관심이 있습니다 :-) 당신은 정말 기본 키가 CityID가 필요합니다. 그래서 위의 두 가지 해결책 중 하나를 선택했습니다. –
사이드 노트 : 국가 및 지방의 선택에 따라 필터 드롭 다운 값과 같은 데이터로 무엇인가를하고 싶다고 가정합니다. 분기 코드를 피하기 위해 가상 지방 솔루션 (지방이없는 각 국가에 대한 상상의 지방이 만들어 짐)이 가장 간단합니다. 한 국가에 상상의 지방이 있는지 확인하고이 경우 지방 드롭 다운을 사용하지 않도록 설정할 수 있습니다. 한 국가에 하나의 지방 (가상 또는 안)이있는 경우 도시 드롭 다운을 미리로드 할 수도 있습니다. –