Я пытаюсь смоделировать вложенные отношения, и мне трудно добраться до того места, где я хочу быть. Я хочу привести пример, который, надеюсь, ответит на некоторые из моих вопросов; его основано на географии.Дизайн базы данных
Хотелось бы иметь единый объект Region. Этот субъект региона позволяет планетам, континентам и странам.
У меня в основном был бы один регион под названием Земля. Это будет первый уровень иерархии. Тогда у меня были бы 7 континентов, которые были бы вложены в Region Earth. Тогда я бы добавил все страны мира и связал каждого со своим внешним континентом. Там могут быть случаи краев (я не знаю, есть ли в этом примере, но я хочу, чтобы они были), где Страна принадлежит более чем одному континенту.
То, что я в основном хочу, чтобы добраться до является возможность сказать:
Выберите Все страны на континенте. Мне также хотелось бы, чтобы на неопределенное время тоже было гнездо; поэтому следующим слоем будут штаты/провинции. Поэтому я мог бы сказать, что хочу всех провинций Северной Америки.
Я могу представить себе вид, как 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? Вместо того, чтобы FK отображался на идентификаторы, вы могли бы использовать пространственную информацию для определения того, «какие страны находятся на континенте». – RPM1984
Россия и Турция охватывают два континента, а именно Европу и Азию. –