gpt4 book ai didi

sql-server - 使用这么多 varchar 字段是否有正当理由? (微软 SQL 数据库)

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:49 25 4
gpt4 key购买 nike

我正在将数据从基于 IBM Universe 的旧系统迁移到新的企业级数据信息管理系统,并在此过程中学习数据库设计。

我查看了新系统的后端数据库结构(它是一个MS SQL DB,大约有100个表),发现有些地方很奇怪。但我不知道我的经验不足是否是我这么认为的原因,这只是标准做法,或者这些奇怪之处是否真的只是糟糕的数据库/应用程序设计。

例如:

  • 一些日期字段是 varchar(20)
  • 存储测量值的字段是 varchar(50),而不是像 decimal 和 enum 之类的东西来存储测量单位
  • ISBN 10 和 13 数字字段是 varchar(50)
  • 一些查找 ID 外键是 varchar(100),即使实际查找表主键是一个 int
  • 一些字段是varchar(0)
  • 用于存储月份和年份的其他单独字段,每个字段都是 varchar(250) - 我不知道什么样的设计决策需要一年最多 250 个字符,除非他们真的太过分了他们的 Y2K 合规性,或者决定使用自宇宙开始以来的秒数来存储日期时间

还有很多其他的。数据库看起来超过一半是 varchar 字段。

我还应该提到,数据库中的所有 varchar 字段实际上都是 n-varchar - 所以它都是 unicode,即使是只存储数字的字段也是如此。

在某些情况下,使用如此多的 varchar 字段可能是最佳选择,是否有合理的论据?(灵 active ……也许……?)

最佳答案

这看起来确实很奇怪,但这实际上取决于数据的使用方式。使用 varchar 可能有很好的理由。如果不需要使用条件中的字段或执行计算,使用 varchar 会给用户更多的自由来做他们想做的事。

例如,在房地产领域,房屋的价格似乎应该是数字。但是,许多代理商希望显示诸如“要求定价”、“低 300 美元”等短语(尽管我们保留了一个单独的数字价格字段用于搜索)。

我建议查看这些字段是如何使用的,以确定它们是否应该是 varchar。如果您看到从 varchar 到它应该是的类型的大量转换,那么 varchar 可能不是正确的选择。

关于sql-server - 使用这么多 varchar 字段是否有正当理由? (微软 SQL 数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com