微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 类型字段的INT或CHAR

表的最佳设计是什么,Type字段是int还是char(1)?换句话说,给定此架构:
create table Car
(
    Name varchar(100) not null,Description varchar(100) not null,VehType .... not null
)

为了使VehType成为int或char(1),它是否更有效(性能明智)?假设你有五种类型的汽车,你应该使用递增值0 – > 4,或类型的字符(比如说’v’,’s’,’c’,’t’,’m’)?

如果它不止于此,我将使用一个单独的Type表并具有外键关系,但我认为没有必要.

我注意到sys.objects目录视图使用类型字段的字符.这有什么理由吗?我只是在这里勉强抓住,是不是我觉得更舒服?

解决方法

你通常使用1字节的tinyint

> char(1)会稍慢,因为比较使用整理
>困惑:什么是S:SUV或Saloon or Sedan还是体育?
>在添加更多类型时使用字母限制您.见最后一点.
>我见过的每个系统都有一个以上的客户端,例如报告.将V,S变为“Van”,“SUV”等的逻辑将需要重复.使用查找表意味着它是一个简单的JOIN
> extendibility:再添加一个类型(“F”表示“Flying car”),您可以将一行添加到查找表中或更改大量代码和约束.而你的客户端代码也是因为这必须知道V,S,F等是什么
>维护:逻辑分为3个位置:数据库约束,数据库代码和客户端代码.使用查找和外键,它可以在一个地方

在使用单个字母的正面…呃,看不到任何

注意:有一个相关的MySQL question about Enums.建议也使用查找表.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐