工作后主要是做LAMP开发方面的,同时也维护一些服务器(小公司什么都得做),故并有意想专做dba,估计更可能在开发Mysql DBA方向入手。
  所以总结一些自己的一些简单的数据库设计的经验:

   实践出经验,但在实践的时候看看理论会更好,这样现学现用掌握的快。另外,个人的一些小经验是多看看一些开源产品的数据库设计。
   当初刚开始学开发的时候,看了点wordpress的设计,以及后来对discuz和ecshop等数据库的结构,算是入门了。   

个人总结一下自己的一些设计经验:

    第一、从产品的角度去看待问题(即功能实现):正如要实现什么样的功能。很多产品的数据库设计都是比较巧妙的,这个最好了解对比着同类软件不同产品的。
        比如电子商城方面 ecshop和国外的zendcart,就会发现zencart在数据库上的优势,比如 多语言多地区多货币,特别是多语言多货币上的设计。
        另外WordPress对比drupal及一些国内的cms,可以发现很多结构相似,但不同之处正是其产品的特点。这个角度也是数据库设计的最基本功能实现。

阿里云-推广AD

    第二、从开发的角度上:怎样设计对以后性能实现最优化,以及这样实现起来对逻辑层的开发有什么好处,接口查询是否方便。
        很多orm的设计是开发映射到数据库的设计的。比如一些开源的orm(Python的sqlalchemy及ror和php的超多框架),
        有些数据库的设计基本上就是一个oo的设计,sql语句都不用写,照样可以生成很完善的表。
   
    第三、从运维上角度:这个可以理解从稳定性,健壮性,高效性上来看。比如分布式数据库的部署对设计的影响,数据库处于分布式的时候是经常是读写分离的,
          所以在表设计的时候就要考虑附表及一些字段的类型(比如blog/text大字段可以分开存储)。分区分表对数据库性能的影响,以及事务的处理,这个得选择
          合适的存储引擎了,读多写少可用MyISAM,一些不写的甚至可以压缩,有外键关联或事务处理的选择Innodb,对即时性要求高且数据不是特别重要的可以选择heap,
          到一定的时间归档到MyISAM(这个应用如log处理)。

    第四、合适的时候应用外部数据库插件。平时在搜索,特别是全文检索上,我很喜欢用sphinx,这个插件不仅仅可以做全文检索,阅读其文档可以发现很多功能可以取代
        数据库,比如在做多值属性过滤,完全可以使用sphinx快捷实现。另外,使用外部的缓存,如memcached,取代一些数据的临时存储,并且在某些方面可以和内存表
        实现同样的功能。这部分貌似和数据库设计没关系,但如何和这些插件合理的搭配,这又设计到一些表的设计,也就是说。这些插件可以简化或优化数据库的设计
        (比如刚才所说的多值属性)

以上即是个人的一些愚见,如有误或者不当之处,请各位大牛指正,并希望各位能贴出一些自己的经验,这里就当抛砖引玉!