数据库设计:从数据模型到实际应用
1. 数据模型转化中的复杂情况
在数据库设计里,将数据模型转化为实际设计时,会碰到诸多复杂状况。以部门与员工关系为例,若该关系存在必需子项,就得完成特定表格填写。并且,像插入部门记录、修改员工记录以及删除员工记录等操作,都可能需要触发器来处理。而部门修改操作,因部门有代理键,通常无需额外动作。
另外,一个表格可能参与多个关系,甚至同一两个表格间也可能存在多种关系。每种关系的最小基数不同,有 O - M、M - O、M - M 等类型。部分关系需要触发器,这就意味着每个表格可能有好几组插入、更新和删除触发器。这些触发器不仅编写和测试复杂,执行时不同触发器的动作还可能相互干扰。
2. 最小基数设计总结
不同类型关系的最小基数设计决策和文档创建总结如下:
| 关系类型 | 最小基数 | 设计决策 | 设计文档 |
| — | — | — | — |
| M - O | | - 更新级联或禁止?
- 删除级联或禁止?
- 插入子项时获取父项的策略
- 插入父项时获取子项的策略
- 主键更新级联或禁止?
- 子项外键更新策略
- 子项删除策略 | 引用完整性(RI)操作以及插入子项时获取父项策略的文档 |
| O - M | | 使用特定模板,还需考虑插入首个父/子实例和删除最后一个父/子实例时的触发器冲突处理 | 包含 M - O 决策,以及触发器冲突处理文档 |
| M - M | | 对于强制父项,RI 操作及插入子项时获取父项策略的文档;对于强制子项,使用特定模板,添加触发器冲突处理文档 | 相关策略和冲突处理文档
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



