代码之家  ›  专栏  ›  技术社区  ›  Arsen Mkrtchyan

创建数据库用户定义数据类型是最佳实践吗?

  •  2
  • Arsen Mkrtchyan  · 技术社区  · 17 年前

    创建用户定义类型而不是使用现有类型是最佳实践吗?在我的预览工作区中,所有基本类型都是预定义的,这是最佳实践吗?它有什么优点和缺点。
    谢谢!

    3 回复  |  直到 15 年前
        1
  •  5
  •   Nick    13 年前

    在MS SQL Server中,这个想法很棒。然而,有一个很大的 但是 ALTER TYPE .... 声明。这可能是一个很大的麻烦。

    ALTER TYPE ISBNType..... 因此,您唯一的选择是基本上删除所有数据库中该类型的所有列,然后以新形式重新创建该类型,并再次创建所有这些列。

    这个想法很棒,我很想使用它——但在我看来,就目前的状态而言,它几乎无法使用,这很不幸。

    马克

        2
  •  2
  •   Ronald Kunenborg    10 年前

    有点晚了,但是。我的2克拉。

    此外,ANSI SQL:1999中定义的UDT封装了方法,并且可以进行子类型化。这意味着,处理约束的业务规则中的某些更改可以在数据库中更改,而无需触及实现。

    然而。..目前实施的UDT还有很多不足之处。我甚至不确定SQL Server是否实现了所描述的标准,更不用说Oracle了。即使他们这样做了,当你使用BI工具、ETL工具或其他相当简单的工具时,使用UDTs的缺点也会立刻变得明显:他们通常不理解UDTs,即使他们理解了,他们也无法使用它们,因为大多数基于基本类型(int、char和date/time)。

    至于报告工具,让我们考虑一个具有字段组合的UDT。现在,一个与数据库无关的ETL工具如何能够理解类型?它必须能够理解结构才能显示它,或者将其用于计算。对于每个支持的数据库来说,这都是一项艰巨的任务。由于没有人使用UDT,他们不会这样做。这是一个恶性循环,但我们仍然必须忍受它。

    最后,如果你向UDT添加非常复杂的代码,你会遇到一个老问题,即你在一个缺乏良好调试选项的环境中进行编程。这也无济于事。