数据库表设计的优化与代理键考量
1. 数据库设计优化概述
在清理表结构以消除部分和传递依赖后,接下来要关注提升数据库提供信息的能力以及增强其操作特性。以下是一些需要解决的问题,以创建一组良好的规范化表。
1.1 减少数据输入错误
每次向 EMPLOYEE 表中输入新员工时,都必须输入 JOB_CLASS 值。但当设计允许在决定属性中进行“描述性”输入时,很容易出现数据输入错误,从而导致引用完整性违规。例如,在 EMPLOYEE 表中输入 DB Designer 而不是 Database Designer 作为 JOB_CLASS 属性,就会触发此类违规。
为解决这个问题,可以添加 JOB_CODE 属性作为唯一标识符。添加该属性后会产生以下依赖关系:
- JOB_CODE → JOB_CLASS, CHG_HOUR
- 假设 JOB_CODE 是合适的主键,还会产生 JOB_CLASS → CHG_HOUR 的依赖关系,但这不是传递依赖,因为决定因素是候选键。
新的 JOB 表现在有两个候选键: JOB_CODE 和 JOB_CLASS ,这里选择 JOB_CODE 作为主键和代理键。代理键是设计者引入的
超级会员免费看
订阅专栏 解锁全文
10万+

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



