2014-10-27 73 views
0

我有一个数据库类,教授希望我们为每种类型创建域,即使这些类最终只是其他类型的别名。例如,取代使用默认的DATE类型,我们可以根据它是哪一天创建自己的类型(例如,OrderDate)。为每个“逻辑”域创建域

我想知道这是常见还是最佳做法。

我可以想到这种方法的一些优点和缺点。一个专业人士可以清楚地知道该域名的用途,通常我们只会比较字段,如果他们有相同的域名,并且任何其他比较值得注意(因为它可能会比较苹果和橙子)。但是作为一个con,这也使得它更容易处理这些类型,因为我们不得不引用域声明来找出列的真实类型(而不是我们经常需要这样做) 。

回答

1

这不是特别常见的做法。例如,多年来我一直在处理很多数据库,而且我从来没有使用过这种基本类型的替换。

在您的示例中,例如,订单日期可能是订单日期。但是,我可能想知道过去多久 - 这需要“混合”类型,因为当前日期(sysdatenow()getdate()CURRENT_TIMESTAMP?)不是OrderDate。或者我可能想知道在第一次投诉或第一次投诉的订单后多久。即使转换是不可见和自动的,为什么引入不兼容的类型呢?

另一个问题是不同的数据库在支持用户定义的数据类型方面有所不同。因此,使用用户定义类型的代码可能会使代码更难以移植到不同的数据库。为什么限制未来的选择

用户定义类型有一些偶尔的用法有一个地方可能需要特定的新类型 - 复数和点也许。在某些数据库中甚至可能会出现这样的情况:用户定义的基本类型类型非常有用 - 例如,始终如一地表示电话号码。用它们自由地替代内置类型?这似乎是过度杀伤,使代码复杂化,妨碍了一些重要的查询,并限制未来的可移植性选项。