【发布时间】:2014-02-26 06:06:12
【问题描述】:
我需要表总线的主键,它存储诸如总线号、总线类型、注册号等信息。我们知道总线号本身是唯一的,可以是主键,但它的数据类型为字符串 减慢搜索速度在表格中,因此另一种可能的解决方案是添加 int 类型的 自动增量字段,但这会增加网络数据,因为每次我需要同时选择两者总线编号和总线 ID(自动递增) 供用户在 winform 上选择。我需要知道哪种方法更好,或者还有其他更好的方法。
表架构方法 1
bus no - nvarchar(10) (primary key)
bus registartion no - nvarchar(10)
方法二
Bus id - int (autoincremnted) (primary key)
Bus no - nvarchar(10)
bus registartion no - nvarchar(10)
【问题讨论】:
-
请提供架构建议。
-
永远不要使用 NVARCHAR 作为主键。如果您认为使用 INT 的网络流量很大,您能想象使用 NVARCHAR 还会有多少流量吗?正确设计您的架构,您可以最大限度地减少流量并提高性能。 PK 也不需要 BigInt,因为您永远不会得到那么多公共汽车 :)
-
您的 BUS 表应该类似于 CREATE TABLE bus (ID INT NOT NULL IDENTITY(1,1), BusName NVARCHAR(255) NOT NULL, RegoNumber NVARCHAR(10) NOT NULL, PRIMKY KEY (ID ))。然后,您始终使用 ID 号作为查找值。
-
为什么是
BIGINT?INT还不够吗?MEDIUMINT也不够?我对此表示怀疑。
标签: sql sql-server database-design key sql-types