我有一個名爲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