중첩 된 관계를 모델링하고 싶고 내가 원하는 위치에 도달하는 데 어려움을 겪고 있습니다. 희망적으로 내 질문 중 일부에 답변 할 수있는 예를 제시하고자합니다. 그것의 지리학에 근거를 둔.데이터베이스 디자인
단일 Region 엔터티를 갖고 싶습니다. 이 지역 엔티티는 행성, 대륙 및 국가를 허용합니다.
기본적으로 지구라는 단일 지역이 있습니다. 이것은 계층 구조의 첫 번째 레벨이됩니다. 그러면 지구 대륙 내에 중첩 될 7 대륙이 생길 것입니다. 그렇다면 나는 세계의 모든 국가를 추가하고 각각을 외부 대륙과 연관시킬 것입니다. 국가가 하나 이상의 대륙에 속하는 가장자리 사례가있을 수 있습니다 (이 예가 있을지 모르겠지만 거기에 있기를 원합니다).
이 대륙의 모든 국가를 선택
은 내가 본질적에 도착 싶은 말을 할 수있는 능력이다. 무기한으로 둥지를 틀 수있는 능력을 원합니다. 그래서 다음 층은 주/지방이 될 것입니다. 그래서 나는 북아메리카의 모든 주를 원한다고 말할 수 있습니다.
나는 종류의는 SQL이 어떻게 보일지 상상할 수 있지만, 나는 멀티 티어 중첩하는 방법을 모르겠어요
Select *
From Region Outer, Region Inner
Where Outer.Name = "North America"
AND Inner.Type = "State"
그때 단순한 지역 단체와 함께 왔어요을 자체 참조 학부모 - 자녀 개체 :
Region {RegionID, Name, Type}
SubRegion {ParentID, ChildID}
나는 이것이 어떻게 달성되어야 하는지를 배우는 데 가장 흥미가 있습니다. 부정확하거나 잘못된 디자인 결정을 내릴 경우/가정은 자유롭게 의견을 말하십시오. 나는 또한 지리적 인 것들에 명시 적으로 관심이 없다. 나는 그것이 성취하려는 것을 보여준 좋은 예라고 생각했다.
SQL 2008 R2에서 C# 및 Linq를 사용하여이 작업을 수행하려고합니다.
이것은 계층 적 네트워크 그래프처럼 느껴 지므로이 방법을 잘 이해해야합니다. 나는 단지 그것을 모른다. ..
SQL Server 2008 Spatial Types를 살펴 보았습니까? FK가 ID에 매핑되는 대신에 공간 정보를 사용하여 "어느 나라가 대륙 안에 있는지"알아낼 수 있습니다. – RPM1984
러시아와 터키는 유럽과 아시아의 두 대륙에 걸쳐 있습니다. –