我有一个名为People的表,其中一列是名为“properties”的xml字段。我用它来存储关于每个人的随机信息,基本上允许人们存储未来添加的任何额外字段,而无需重新设计数据库。并不是所有的人都会在他们的xml中拥有相同的元素。SQL 2005查看Xml数据
CREATE TABLE [dbo].[Person](
[PersonID] [bigint] IDENTITY(1,1) NOT NULL,
[PersonType] [nvarchar](50) NULL,
[Title] [nvarchar](5) NULL,
[Forename] [nvarchar](60) NULL,
[Surname] [nvarchar](60) NULL,
[Company] [nvarchar](60) NULL,
[Properties] [xml] NULL
)
的XML的一个例子是:
<PropertyList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property Name="Class">Class A</Property>
<Property Name="CarRegistration">123456</Property>
<Property Name="MedicalNotes">None</Property>
</PropertyList>
我有需要访问这些数据的几个老接入前端数据库我的计划是创建该格式化的表格,以匹配每个前端视图其原始布局。为我们节省了重新开发接入前端的工作,因为他们很快就会被删除。但是,在我的新设计中,几个字段存储在XML属性中。无论如何,我可以创建一个表的可更新视图,其中有一列或多列保存回xml字段。
我可能想要创建一个名为“people_students”的表的视图,该表只返回当前存储在xml中的所有记录,其中PersonType =“Student”,其中一列称为“Class”。
我本来打算为EAV的方法,但其他一些问题后,我在这里张贴的普遍共识是要抛弃EAV和使用文档而不是导向。我同意,除了这个问题外,管理/编程似乎更容易。我正在考虑按照临时表格来管理与您的建议类似的数据。我没有真正有能力更新前端代码,因为它们不是由我开发的,所以所有的更新都必须在数据库级别,你有什么想法,我可能会得到一些示例代码等?谢谢 – Jammy 2010-12-08 21:18:54