如何为不具有架构的信息设计数据库?

时间:2012-06-27 20:25:32

标签: database-design blob

说我想建立一个电子邮件数据库。由于我不理解电子邮件的结构,我可能会将电子邮件存储在一个只有基本属性的简单表中:

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

但后来我决定理解电子邮件的结构,并希望扩展我的数据库以将整个电子邮件表示为结构化数据而不仅仅是blob。我可能会创建一个EmailAddress实体,一个MIME实体,一个Header实体,带有适当的外键和关联表。

但是我现在可以在我的数据库 中做些什么,以期有一天将blob解压缩到子模式中?

3 个答案:

答案 0 :(得分:1)

不要为此使用关系数据库。

使用document database或其他schemaless data store

答案 1 :(得分:1)

考虑以结构化格式(例如XML)存储它,以便您以后可以有效地将数据转换为适当的格式。

答案 2 :(得分:0)

  • 通过实现访问层来掩盖未来的架构更改。使用视图进行读取,存储过程(或触发器)以写入基础表 - 避免从应用层直接访问表。

  • 考虑锚建模方法,它使用6NF并且非常适合于不断变化 - 模式演化。锚建模收费会自动创建视图和触发器作为访问层。