第七章|数据定义与约束
本章目标
学习数据库模式设计,掌握 DDL 操作、约束类型、范式化原则,理解如何设计高质量的数据库结构。
从 CREATE TABLE 开始,理解数据类型的选择,学会使用各种约束保证数据完整性,掌握范式化理论,最后学习数据迁移的最佳实践。
学习路径
按顺序阅读以下文章,每篇包含讲解、示例和练习:
DDL 基础:CREATE、ALTER、DROP
掌握表和数据库的创建、修改、删除操作。数据类型:选择合适的类型
理解常用数据类型及其适用场景。约束:PRIMARY KEY、FOREIGN KEY、CHECK
使用约束保证数据完整性。范式化:1NF、2NF、3NF、BCNF
理解范式化理论,设计良好的数据库结构。
关键概念
DDL 定义数据结构
sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);约束保证数据完整性
- PRIMARY KEY:唯一标识
- FOREIGN KEY:引用完整性
- UNIQUE:唯一性
- NOT NULL:非空
- CHECK:自定义规则
范式化减少冗余
非范式化:
text
orders: id, user_name, user_email, product, amount范式化:
text
users: id, name, email
orders: id, user_id, product, amount前置知识
- 掌握基本 SQL 语法
- 理解关系数据库概念
- 了解数据建模基础
练习答案
本章所有练习的答案和详细解释:第七章练习答案
深入阅读
为什么需要约束?
约束在数据库层面保证数据完整性,比应用层验证更可靠:
- 多个应用访问同一数据库
- 直接 SQL 操作绕过应用逻辑
- 数据库自动拒绝无效数据
范式化 vs 反范式化
范式化:减少冗余,保证一致性
反范式化:提高查询性能,允许冗余
选择取决于读写比例:
- 读多写少 → 反范式化(加快查询)
- 写多读少 → 范式化(保证一致性)