一、数据库设计的重要意义
1. 数据是一个大型web、信息服务应用的核心。
2. 良好的数据模型、数据表结构设计可以简化应用的复杂性,提高性能
二、数据库优化三层次
1. 数据库系统优化:DBA通过调整数据库配置,参数,设置缓存等提高数据库系统性能
2. 数据库设计优化:即本文的主题内容
3. 应用程序优化:如高效的sql,少用事务,不用分布式事务
三、数据库设计最佳实践
1. 表设计
表一般包括基本表、中间表、临时表。基本表应具有原子性、原始性、演绎性、稳定性。正确处理原始单据和数据基本表间一对多、多对一的关系。
2. 主键一般取没有意义的值,表示实体的抽象。
3. 适当允许数据冗余,进行反范式设计,以空间换时间。在数据库三个范式中,保证原子性约束(1NF)和唯一性约束(2NF),放宽冗余性约束(3NF)。在数据冗余中,不允许低级冗余的出现(字段的重复),允许高级冗余(字段的派生出现)。
4. 多对多的实体关系利用中间表实现。
5. 合理使用列变行、行变列的技术。
6. 复杂计算尽量在应用中进行。如把计算好的数据入库,把数据库中的数据取到内存中计算。
7. 数据表水平切分和垂直切分。