数据库---为什么要这样建表(上)

面试的时候说自己做j2ee网站时候和项目经理一起设计过表?

然后对面的面试官像机枪子弹一样的问题过来了?

  1. 你知道数据库设计三大原则吗?(当时说,原子性,不可传递?)
  2. 你知道mysql数据引擎吗?(当时说,有好几个吧!然后说的常用的两个innodb和asm, 尴尬?, 明明是MyIsam)
  3. 你知道怎么选择数据引擎吗?(innodb支持事物,myisam不支持事物)
  4. 你知道索引吗?(当时说, 好像有聚簇索引和非聚簇索引)

当时问了这几个问题后,就完全懵逼了, 面试后肯定是gg了.

其实平时设计过程中知不知道这些, 其实是知道的, 或者说有些是忽略的.如果你说我能建表,性能什么的见鬼去吧!这样也没错. 但是如果想要发挥性能的极致, 不去了解你根本就不知道可以这样做?为什么这么做?

回顾一下平时设计思路?很多种(小公司职员?,用的比较少)

  1. 会不会有事物? 有,那就只能是innodb,  一般网站设计中没有事物的真的少得可怜 ,所以除了看书,帖子,资料很少其他渠道知道 (很明显这一种就让很多很多后续设想胎死腹中)
  2. 在项目创建初期,可能很少用到索引,因为数据量很少, 很多时候数据库优化是db的事情(这里又说明我是小公司的码农,血的教训) , 所以对索引的了解 , 基本都忘记了. 但是说道索引不得不提的就是主键,唯一键,他们会自动生成unique index, 在来看看单列/复合索引现在看来是一个前期必备的设计条件呢?我觉得应该是, 复合索引在多条件查询的时候顺序很重要, 所以最初的时候应该定一个下来
  3. 字段设计, 使用什么类型的字段, 是定长还是可变类型, 字段长度多少才能满足.  可以问问自己设计的时候真的想过吗? 也许想过, 但是可能想的时间不够多, 比如数值 是int?还是bigint, 是varchar还是char.

也许在程序员的世界里应该多问问几个为什么,多多的深度挖掘才是提升自己的唯一捷径?

然后在找了下资料,就光这三个问题, 面试起码都可以说一个小时! 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/2324863/blog/1824211

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值