SQL Server: как можно определить отношения (границы) между состояниями? - PullRequest
0 голосов
/ 01 августа 2010

Предположим, вам нужно построить таблицы БД, которые отображают состояния и их границы между собой.Допустим, таблица «Состояния» будет выглядеть следующим образом:

Состояния: Имя (PK), Размер и т. Д. *

Каков будет подходящий способ определения отношений(границы) между состояниями?

Я предложил три альтернативы -

  1. Определение таблицы границ с первичным ключом, объединенным двумя полями: Id (PK), StateName (PK, FK)
  2. Определение таблицы границ с помощью StateName1 (PK, FK), StateName2 (PK, FK)
  3. Определение таблицы границ с объединенным значением имен двух состояний.

Дополнительная информация:

  • Я собираюсь запросить данные следующим образом: someState.HasBorderWith(State anotherState)
  • Я использую EF 4.0 с объектами POCO.

Ответы [ 2 ]

2 голосов
/ 01 августа 2010

Вариант 2 - стандартная реализация таких отношений. Я не понимаю, что вы имеете в виду с опцией 1, а опция 3 не является опцией - запрос на это будет кошмаром!

1 голос
/ 01 августа 2010

Лично я бы создал таблицу с:

 Id (PK)
 StateName1 (FK)
 StateName2 (FK)

Это в основном ваш второй вариант с дополнительным полем Id (которое не обязательно, но из практики используйте поля Id почти для каждой таблицы).

...