2012-11-27 24 views
2

我們有一個數據庫存儲約5個聯繫人,每個聯繫人都有多個地址。使用XML列而不是非規範化?

的DB是歸一化的,單獨的地址生成表與FK到聯繫人,適當的索引。 〜10m地址。

地址再次引用省份&國家表。

因爲這是一個聯繫的同時觀看一個平臺,需要對地址屬性沒有搜索(如果 - 我們使用Lucene.Net)......這將是有意義的只是把地址信息爲聯繫人上的XML字段?

<Addresses> 
    <Address Street="" City="" ... /> 
    <Address Street="" City="" ... /> 
</Addresses> 

它不是一個真正的非正規化 - 但仍然擺脫3聯接(地址/國家/省)

或者提出另一種方式....會5mio記錄和10mio記錄甚至還加入了把任何緊張數據庫? (比方說用50〜請求擊中DB同時?)

難道是過早的優化做這樣的事情? (事件時,我絕對相信,我永遠不會查詢地址屬性...)

如果使用此列的NoSQL我們使用SQL Server 2012

+0

我想看看這個回答的! – jocull

回答

0

- 只是爲了保存值,並得到整個數據這個解決方案可以使用。但也有一定的侷限性:

  1. 硬盤在此列中搜索數據(但有可能)
  2. 很難修改此列中的數據(但有可能)
  3. 在這個你不能得到數據的一部分使用EF例如(只是用存儲過程)
  4. 沒有foreing鍵列(你必須支持數據一致性自己)

,你會得到這樣的好處:

  1. 簡單的存儲(一個表中的所有數據)
  2. 簡單查詢

不久,是的,你可以因爲你說你會不會查詢此數據的一部分,或者改變使用此解決方案。