测验:schema 设计与标准
为什么数据标准要按照标准词 → 标准域 → 标准术语的顺序制定?
- 监理交付物清单规定了该顺序,改变顺序会被指出
- 先固定词和域,无论由谁设计,都会得到相同的名称以及相同的类型和长度
- DBMS 目录会按该顺序验证引用
- 建模工具只能按该顺序生成定义文档
关于复合索引的列顺序,以下哪项是基本规则?
- 把用于等值条件的列放在前面,把用于范围条件的列放在后面
- 完全按照表定义中的列顺序,避免混淆
- 把存储空间较小的类型放在前面,节省索引页
- 把 NULL 较少的列放在前面,缩小扫描范围
表定义文档标注了“必填”,但 DDL 中没有 NOT NULL,会产生什么结果?
- 数据库会对照定义文档和模式并发出警告,因此部署前能发现
- 由于没有约束,NULL 会被写入,通常到查询报错或统计不一致时才暴露
- 应用验证层会阻止,因此不会影响真实数据
- 省略约束检查会加快插入,但会损害查询性能
对韩国 SI 项目中继续用 CHAR(8) YYYYMMDD 保存日期的惯例,最均衡的判断是什么?
- 类型选择应遵循标准,因此新系统一律使用 DATE,不设例外
- 定长比较更快,所以 CHAR(8) 的查询性能始终优于 DATE
- 集成和迁移节点很多时,漏掉转换会形成隐蔽错误,因此应通过“协商”决定
- 旧式 DBMS 不支持 DATE,只能形成这一惯例
使用逻辑删除(DEL_YN)的系统最常见的事故是什么?
- 已删除记录持续保留,表越来越大并耗尽磁盘
- 删除标记值严重倾斜,导致索引失效
- 查询遗漏删除条件,使已删除数据重新显示在页面上
- 大量更新删除标记,围绕同一记录产生死锁
数据迁移时为什么先删除索引,加载完成后再重建?
- 索引会损坏迁移数据
- 每次 INSERT 都要更新所有索引,会大幅拖慢批量加载
- 存在索引时无法加载 CSV
- 索引会在迁移后自动重建
从数据库元数据生成表定义文档有什么实际好处?
- 减少手工编写文档的时间,节省交付物制作工作量
- 生成定义文档时会刷新统计信息,同时提升查询性能
- 文档不会与真实模式脱节,人只需维护说明
- 自动生成的交付物在监理中可信度更高,有利于评分