Tho*_*ger 18 database-design sql-server datatypes
表格或Type字段的最佳设计是什么?换句话说,鉴于此架构:intchar(1)
create table Car
(
Name varchar(100) not null,
Description varchar(100) not null,
VehType .... not null
)
Run Code Online (Sandbox Code Playgroud)
VehType成为 anint或 a是否更有效(在性能方面)char(1)?假设你有五种类型的汽车,你应该使用递增值 0 -> 4,还是类型的字符(比如;'v'、's'、'c'、't'、'm')?
如果不止于此,我将使用单独的 Type 表并具有外键关系,但我认为没有必要这样做。
我注意到sys.objects目录视图为type字段使用了一个字符。有什么原因吗?我是否只是在稀薄的空气中抓住了它,这是我更舒服的吗?
gbn*_*gbn 19
您通常也会使用 tinyint,它也是 1 个字节
char(1) 会稍微慢一些,因为比较使用排序规则
困惑:什么是 S:SUV 或Saloon 或 Sedan或 Sports?
当您添加更多类型时,使用字母会限制您。见最后一点。
我见过的每个系统都有不止一个客户端,例如报告。将 V、S 变为“Van”、“SUV”等的逻辑需要重复。使用查找表意味着它是一个简单的 JOIN
可扩展性:再添加一种类型(“F”代表“飞行汽车”),您可以将一行添加到查找表或更改大量代码和约束。还有你的客户端代码,因为它必须知道 V、S、F 等是什么
维护:逻辑在 3 个地方:数据库约束、数据库代码和客户端代码。通过查找和外键,它可以在一个地方
使用单个字母的好处是......呃,看不到任何
注意:有一个关于 Enums的相关MySQL 问题。建议也在那里使用查找表。
| 归档时间: |
|
| 查看次数: |
6041 次 |
| 最近记录: |