zoukankan      html  css  js  c++  java
  • 数据库设计学习(一)

    三大范式

    第一范式(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数据库的优点。
  • 相关阅读:
    Yahoo! 35条网站性能优化建议
    常见排序
    文件上传于拖拽
    离线web存储
    【前端学习】【jQuery选择器】
    【前端学习】【CSS选择器】
    【疯狂Java讲义学习笔记】【流程控制与数组】
    【疯狂Java讲义学习笔记】【数据类型与运算符】
    【疯狂Java学习笔记】【理解面向对象】
    【疯狂Java学习笔记】【第一章:Java语言概述】
  • 原文地址:https://www.cnblogs.com/crafter/p/2262928.html
Copyright © 2011-2022 走看看