SQL Server:定义状态之间的关系(边界)的适当方法是什么?

时间:2010-08-01 17:32:33

标签: sql-server tsql entity-framework database-design

假设您必须构建一个描述状态及其相互之间边界的数据库表。让我们说States表看起来像:

状态:名称(PK),大小等......

定义状态之间的关系(边界)的适当方法是什么?

我提出了三种选择 -

  1. 使用由两个字段组合的主键定义边框表:Id(PK),StateName(PK,FK)
  2. 使用StateName1(PK,FK),StateName2(PK,FK)定义边框表
  3. 使用两个州名称的连接值定义边框表。
  4. 更多信息:

    • 我将按如下方式查询数据:someState.HasBorderWith(State anotherState)
    • 我将EF 4.0与POCO实体一起使用。

2 个答案:

答案 0 :(得分:2)

选项2是这种关系的标准实现。我不明白你的意思w /选项1,选项3 不是一个选项 - 查询这将是一场噩梦!

答案 1 :(得分:1)

就个人而言,我会创建一个表格:

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

这基本上是你的第二个选项,带有一个额外的Id字段(这不是必需的,但几乎每个表都使用了Id字段)。