数据库设计:规范化、反规范化与需求收集
1. 确定数据库的范式
在数据库设计与开发中,我们常面临为新项目创建全新数据模型,或审查现有模型以提升性能、解决逻辑问题的任务。确定现有数据库的范式是关键的第一步,它有助于识别设计中的逻辑错误和性能提升点。
1.1 确定范式的步骤
- 进行需求访谈 :与关键利益相关者和最终用户交流,了解他们对应用的需求。访谈应在深入审查设计之前进行,避免形成偏见。同时,要像对待新项目一样生成详细的文档,否则可能导致设计决策失误。
- 开发基本模型 :根据访谈收集的需求和信息,构建基本的逻辑模型,明确关键实体及其关系,加深对数据库基本设计的理解。
- 查找范式 :将自己构建的模型与现有模型或数据库进行对比,分析差异及其原因。关注关键实体、外键关系以及仅存在于物理模型中用于支持关系的实体和表。评估每个实体的键和非键属性,判断是否符合“键、全键、仅键”的理想状态。对于看似符合第三范式(3NF)的实体,进一步评估是否符合巴斯 - 科德范式(BCNF)和第四范式(4NF)。若存在多对多关系,除非有特殊原因,否则要确保满足第五范式(5NF)。
1.2 识别范式的要点
识别数据库中每个实体的范式并不难,关键是考虑每个属性是否完全依赖主键、是否仅依赖主键以及实体中是否只有一个候选主键。若答案为否,可考虑从现有实体中创建单独的实体,以减少数据冗余。
1.3 确定范式的意义
遵循上述步骤,能了解数据库符合的范式