`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`total_price` decimal(10,2) NOT NULL DEFAULT '0.00',
`user_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.避免使用触发器
-
- 触发器是一个隐藏的存储过程,因为它不需要参数,不需要显示调用,往往在你不知情的情况下已经做了很多操作,无形中增加了系统的复杂性。
- 涉及到复杂的逻辑的时候,触发器的嵌套是避免不了的,如果再涉及几个存储过程,再加上事务等等,很容易出现死锁现象。
- 存储过程的致命伤在于移植性,存储过程不能跨库移植,在后期系统升级维护时难度加大。
4.谨慎使用预留字段
-
- 无法准确的知道预留字段的类型。
- 无法知道预留字段中所存储的内容。
- 后期维护预留字段的成本高。
建议:
-
- “按需设计”,在经过详细有效的分析之后,在数据表中只放置必要的字段,而不要留出大量的备用字段。
- 如果数量很少,而且信息的性质与原表密切相关,那么就可以直接在原表上动态增加字段,并将相关的数据更新进去
- 如果数量较大,或者并非是原表对象至关重要的属性,那么就可以新增一个表,然后通过键值连接起来。
4.反范式化设计。
-
- 什么是反范式化?
- 适当的违反的范式的要求,允许少量的数据冗余,用空间换取时间。
- 优点:增加查询效率。
以上仅为本人学习过程中的知识总结,若有错误,还请诸位不吝赐教。
|