我的DBA告诉我使用一个用户定义的SQL数据类型来表示地址,然后在我们的用户表,而不是多个地址列使用新型的一列。我从来没有这样做之前,我想知道,如果这是一种常见的做法。

此外,有什么获得这方面的信息最好的地方 - 它是特定产品

有帮助吗?

解决方案

有许多关于其它问题,SO 对于如何表示在数据库中的地址。 AFAICR,他们都不建议为目的的用户定义类型。我不会把它当成一个普通的方法;这并不是说,这是不是一个合理的做法。主要的困难在于决定提供操纵地址数据什么方法 - 那些用于格式化数据出现在一个信封,或在特定的地方印刷形式,或者更新领域,担心国际地址的许多新问题,等。

定义用户定义的类型是非常特定产品。你这样做Informix中的方式是从它在DB2和Oracle做了不同的方式,例如。

其他提示

据我所知,在SQL Server世界至少,UDT不是用得非常多。

麻烦与UDT是事实,你不能轻易地更新它们。一旦创建,并在数据库中使用,他们几乎就像是一成不变的。

有没有“创建或更改(UDT)”命令:-(所以要改变的东西,你必须做大量的洗牌周围的 - 可能走复制现有的数据,然后滴加大量来自其他表的列,然后滴加您UDT,具有新的结构重新创建它,并重新施加数据和一切。

这只是太多的麻烦 - 你知道:有被改变!

现在,在SQL Server的土地,UDT是一个不错的主意 - 但真的不好实现。我不推荐使用它们广泛。

马克

我也要而避免使用用户定义的数据类型作为其认定中和可用性将使您的代码依赖特定数据库上。

相反,如果使用的是任何面向对象的语言,创建一个组合关系,以限定地址雇员(例如)和地址存储在一个单独的表。

EG。雇员表和Employee_Addresses表。一个雇员可以有多个地址。

  

用户定义SQL数据类型来表示地址

用户定义的类型可以是相当有用的,但一个邮件地址不跳出由于这些情况之一(我,至少)。什么是一个邮寄地址给你?它说的是你在信封上打印邮寄人吗?如果是的话,文字是一样好,因为它是会得到。如果您需要了解什么状态是一个人在法律上的原因,商店,分别,这不是一个问题。

这里

其他职位批评UDT的,但我认为他们确实有一些惊人的用途。 PostgreSQL有过全文搜索基于UDT的很长一段时间插件之前,全文搜索实际上是集成到核心产品。现在PostGIS的是一个非常成功的GIS产品,是完全基于UDT的插件(它有GPL许可,所以绝不会被整合到核心)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top