数据库开发:自定义数据类型、文档管理与数据完整性保护
1. 自定义数据类型(UDTs)的挑战
虽然可以使用.NET代码创建自定义数据类型(UDTs),并将其视为SQL Server中的业务对象,但实际上使用UDTs作为业务对象存在一些缺点:
- 索引困难 :对UDT的单个属性进行索引较为困难。例如,员工业务对象可能包含名字、姓氏、员工编号、地址、电话号码等属性。在规范化的表中,每个实体都有自己的列,这些列可以有索引以优化性能。但要将UDT的单个属性的计算列持久化作为索引列,则需要付出更多努力。
- 类型不可更改 :对于两种类型的UDTs,一旦类型被绑定并被任何列使用,就不能更改该类型。这在开发过程中,如果数据类型设计得不够好,可能会成为一个真正的问题。
注意事项
可以使用 ALTER ASSEMBLY
语句更新CLR UDT,而无需先删除它们。如果公共属性发生更改,则使用此UDT的现有列要么必须更新,要么必须在UDT中使用一些特殊的版本控制代码,并将其持久化在序列化数据中,以便知道数据使用的是哪个版本的UDT。
提示
复杂的数据类型用途有限,仅在绝对必要且能带来巨大好处的情况下使用。
2. 数据库对象的文档管理
在数据库建模过程中,创建的描述、注释和各种数据对于帮助开发人员理解表的用途非常有用。在SQL Server 2000中,引入了扩展属性,允许存储有关对象的特定信息。通过创建这些属性,可以构建一个信息库,供应用程序开发人员使用:
-