为什么在Microsoft SQL Server中使用"Y"/"N"而不是位字段?

cbp*_*cbp 14 sql sql-server boolean

我正在研究由另一个暴徒开发的应用程序,并且因为使用char字段而不是数据库中所有布尔列的位而感到困惑.它使用"Y"表示true,使用"N"表示false(这些必须为大写).然后,类型名称本身会出现一些名称如ybln的模糊名称.

由于很多原因,使用起来非常烦人,其中最重要的是它只是看起来非常令人不悦.

但也许我这是愚蠢的 - 为什么有人会这样做?它是数据库兼容性问题还是我不​​知道的一些设计模式?

任何人都可以开导我吗?

Jer*_*ebe 18

我经常在较旧的数据库模式中看到这种做法.我看到的一个优点是使用CHAR(1)字段提供了多于Y/N选项的支持,例如"是","否","可能".

其他海报提到可能已经使用过Oracle.我所提到的模式实际上部署在Oracle和SQL Server上.它将数据类型的使用限制为两个平台上可用的公共子集.

它们在Oracle和SQL Server之间的几个地方确实存在分歧,但是在大多数情况下,它们使用数据库之间的通用模式来最小化支持两个DB所需的开发工作.


rp.*_*rp. 12

欢迎来到布朗菲尔德.你继承了一个由老同学设计的应用程序.它不是一种设计模式(至少不是一种设计模式,它有一些好的东西),它是编码人员的遗迹,他们在数据类型有限的数据库上切割.如果没有重构数据库和大量代码,那么就要咬紧牙关,然后直视它(并注意你的情况)!


WW.*_*WW. 10

其他平台(例如Oracle)没有一点SQL类型.在这种情况下,它是NUMBER(1)和单个字符字段之间的选择.也许他们开始在不同的平台上或想要跨平台兼容性.