繁体   English   中英

合并SQL表主键的字段?

[英]Combining fields for SQL table primary key?

可以使用两个字段(例如ZIPCode和Route)创建主键吗?

public class RouteInfo
{
    [Key]
    public int ZIPCode { get; set; }
    public string Route { get; set; }
    public int BusinessCount { get; set; }
    public int ApartmentCount { get; set; }
    public int POBoxCount { get; set; }
    public int ResidentialCount { get; set; }    
}

邮递区号:路线有1:1的关系。 因此,当客户输入邮政编码时,他会获取该邮政编码中的路由列表,例如:

B001
B002
B003
...
C001
C002
C005

可以将它们与邮政编码组合以生成主键吗? 例如:

21001B001
21001B002
21001B003
...
21001C001
21001C002
21001C005

您可以将复合主键与邮政编码和路由用作单独的值,但是将它们存储在一起时会比较棘手。 我对您需要使用的有效邮政编码和路由知之甚少,但是对于相同的结果代码,您可能(也可能不会)获得2(或更多)不同的邮政编码和路由组合

例如:

  • 邮政编码21001 ,路线B001
  • 邮编2100与路线1B001

我会尝试将它们分开存储,甚至最好使用替代(自动递增)数字值作为主键。 这样可以解决将来的问题,例如,当路线更改其代码时会发生什么? 突然,路线B001已更新,现在是G023。 您将需要更新它的主键值以及与此相关的所有外键。 邮政编码也会发生同样的情况。 邮编也可能在不同国家(例如以色列和美国)重复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM