首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在主键的情况下,哪一个更好?

在主键的情况下,哪一个更好?
EN

Stack Overflow用户
提问于 2014-02-26 06:06:12
回答 1查看 1.1K关注 0票数 0

我需要存储诸如总线no、总线类型、注册号等信息的表总线的主键。我们知道总线no本身是唯一的,可以是主键,但它是数据类型字符串在表中缓慢搜索,因此另一个可能的解决方案是添加int类型的自动增量字段,但这将增加网络数据,因为每次需要同时选择总线no和bus id(自动递增),以便在winform上进行用户选择。我需要知道哪种方法更好,还是有其他更好的方法。

表模式方法1

代码语言:javascript
复制
bus no - nvarchar(10) (primary key)
bus registartion no - nvarchar(10)

方法2

代码语言:javascript
复制
Bus id - int (autoincremnted) (primary key)
Bus no - nvarchar(10)
bus registartion no - nvarchar(10)
EN

回答 1

Stack Overflow用户

发布于 2014-02-26 10:47:52

  • 数值列-非空列始终是数据库表中主键的最佳选项。数据库引擎可以以最有效的方式存储、索引和查找它们。
  • 不要介意网络流量的开销。只需不查询结果集中不需要的列。避免SELECT *语句。
  • 如果有必要,类型转换(例如,Integer到String)可以很容易地在SELECT或客户端程序中完成。

在对数据库进行建模时,最好提前向每个表添加一个主键列,即使您觉得不需要它。给主键列一个标准化的名称(tablename + 'id‘是一种常见的命名约定)并键入(整型,unique标识符)并坚持使用它。不要混合整数、长、短和其他数据类型,因为它只会使表的连接复杂化。

例如,您的实体总线:

  • 表名是总线
  • 主密钥名为BusId
  • 主键类型为Int
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22033152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档