2012-06-27 67 views
1

說我想建立一個電子郵件數據庫。正如我不明白電子郵件的結構,我可能會存儲在一個簡單的表格的電子郵件,只有基本屬性:如何爲沒有模式的信息設計數據庫?

Emails 
    email_id integer (PK) 
    from  varchar(200) 
    sent  timestamp 
    email  blob 

但後來我決定,我理解的電子郵件後,所有的結構和希望延長我的數據庫將整個電子郵件表示爲結構化數據而不僅僅是一個blob。我可能會創建一個EmailAddress實體,一個MIME實體,一個Header實體,並帶有適當的外鍵和關聯表。

但是我可以在我的數據庫現在中做什麼,預計有一天將blob拆分成子模式?

回答

1

請勿爲此使用關係數據庫。

使用document database或其他一些schemaless data store

+0

你是說現在使用文檔數據庫來存儲我的無模式數據,然後在我有數據模式後更改我的DBMS嗎? – jl6

+0

@ jl6 - 不,我說的是使用正確的工具來完成這項工作。即文檔數據庫。 – Oded

+0

但問題的本質是工作隨着時間而改變。 – jl6

1

考慮以結構化格式(例如XML)存儲它,以便日後可以有效地將數據轉換爲適當的格式。

0
  • 通過實現訪問層來屏蔽未來的架構更改。使用視圖讀取,存儲過程(或觸發器)寫入基礎表 - 避免應用層直接訪問表。

  • 考慮錨定建模方法,它使用6NF,非常適合不斷變化 - 模式演變。錨定建模收費自動創建視圖和觸發器作爲訪問層。