問79
頻出度★★★
関係データベースのデータを正規化する目的として, 適切なものはどれか。
这道题的解析和你的作答记录。
関係データベースのデータを正規化する目的として, 適切なものはどれか。
提高压缩率并不是规范化的目的。重复减少之后存储量随之变小,这种附带效果确实可能出现,但它与通过编码来缩减数据量的「数据压缩」是两回事;而且规范化把表拆开,反而会带来连接(join)处理负荷增加的副作用。规范化终究是为守护数据完整性而做的逻辑设计,并不是以削减容量为目标的技术。
正解 规范化是着眼于函数依赖(某个项目一旦确定,另一个项目也随之唯一确定的关系)来拆分关系数据库的表,消除同一事实被重复存放在多个位置的状态的一种设计技法。例如,如果订单表里连客户名称和地址都一并保存,同一个客户就会出现几十行,地址变更时若不把所有行都改掉,表中就会新旧地址混杂。把客户信息拆分到客户表中,订单表只用客户编号去引用,那么地址只需改一处即可,矛盾也就不可能发生。像这样消除重复,防止更新异常(漏改,以及插入时、删除时的不一致),使数据不产生矛盾,正是规范化的目的,因此「保持数据的一致性」的イ是恰当的。
承担防止泄露职责的是访问权限设置(按用户限定可以查询、更新的表或列)、加密、认证、日志审计等安全措施,与规范化无关。即使做了规范化,只要权限设置松懈,信息照样会泄露。把表拆分开这件事本身并没有隐藏信息的作用。
让多个用户能够同时处理数据,是加锁(封锁)机制、事务的并发控制以及提交、回滚等 DBMS 功能的职责。规范化讲的是如何设计表的结构,并不左右能否并发访问。