数据库设计的部分简单心得
1、所有实体表拥有一个自增主键,尽量不使用组合主键;
2、如果某个实体的主表,为了更好的展示从属关系,可以考虑采用主表的主键作为子表的主键;
3、涉及多对多关系组合时,可以增加关系表的一个主键,当有依赖于关系表的主键的其他表时,可以考虑这些表直接采用几个关系表(通常为2个);
4、在进行设计时,先按照设计范式组织表关系,然后再兼顾检索性能需要及数据完整性要求,增加冗余关系键;然后填充其他内容键;
5、对表的分类,根据业务系统的特点:核心实体表(业务中比较)、关系映射表、过程实体表(反映或者记录某些实体变更过程,可以回溯前一个状态)、实体变更日志表(审计依据,仅作为记录,不作为过程变动的依据);
6、关于变更记录的设计:一个实体表,变更记录可以有两种类型的记录:快照日志和内容日志,快照日志记录下实体表记录每一次变更前的关键字段的快照,可以用于执行undo的操作,快照日志仅根据需要时进行记录,一般仅记录关键状态的快照,过程性的变更可以不考虑记录;而内容日志则用于记录每一次必要的变更,变更内容为文字描述,用户记录每一次变更操作说明,但不作为undo操作的直接依据。