数据库设计学习(一)

三大范式

第一范式(1NF):表中的每一个字段只能存放单一的值,而且每条记录都要能利用一个惟一的主键来加以识别。

第二范式(2NF):表中的记录的所有字段都要和该表的主键有依赖关系;如果有些字段只和主键的一部分相关的话,就得把它们独立出来变成另一个表。如果一个表的主键只有一个字段的话,它就是符合第二范式的。

一个表符合第二范式,当且仅当:
它符合第一范式
所有的非主键字段都依赖于主键

第三范式(3NF):所有的非键字段都只和而且必须和候选键有相关性,也就是说所有非键属性互相之间应该是无关的。

数据库设计不必完全按三大范式,有时候甚至需要故意反范式。举例来说:有时

候必须存储一些多值字段:如电影信息表的演员列表,演员的个数是不确定的,

所以如果使用YAML或json技术将演员信息编码,即方便读取演员列表又可以任意

删除和添加演员。使用Python的话还可以用Pickle,方法如下:
DB  <===>  Pickle  <===> Dict  
DB  <===>  Pickle  <===> Memcache <===> Dict
使用Pickle的缺点是使用数据在数据库中不可读,有时候不方便。
可以用范式的方式去思考关系,但实践起来的时候一定不要被这些东西束缚住手脚。

NoSQL数据库革命:http://www.cnbeta.com/articles/88079.htm
NoSQL数据存储技术的特点:
1 适用于Web应用;
2 读/写速度比RMDBS快;
3 运行在便宜的PC服务器集群上;
4 开源。

Key/value数据库
http://www.slideshare.net/iso1600/key-value-store
http://www.slideshare.net/qingfeng/tctt-1952460

无模式数据库MongoDB:http://www.mongodb.org/display/DOCS/Home
集合了RDBMS与key/value数据库的优点。

posted on 2009-10-08 21:01  ddper  阅读(243)  评论(0编辑  收藏  举报

导航