逻辑结构设计核心任务是将概念模型(通常是E-R图)转换为具体的数据库管理系统(DBMS)支持的数据模型(如关系模型),并对其进行优化。
一、 主要任务与目标
转换模型:将概念模型(E-R图)转换为关系模型(即一系列的关系模式/表)。
规范化处理:运用规范化理论(如范式)对关系模式进行优化,消除数据冗余和操作异常。
用户视图设计:设计外模式(用户视图),满足不同用户对数据的不同需求,并提高数据的安全性。
完整性约束设计:定义主键、外键、唯一性约束、检查约束等,保证数据的正确性和一致性。
二、 设计步骤
1. 概念模型向关系模型的转换
总体原则:实体转换为关系模式,实体的属性为关系的属性,实体的码为关系的键。
联系的处理:一个联系转换为一个关系模式,有三种情况:
如果联系为1:1 ,则每个实体的码都是关系的键;
如果联系为1:n ,则n端实体的码是关系的键;
如果联系为n:m ,则各实体码的组合是关系的键。
2. 关系模式的规范化
将转换后的关系模式进行规范化分析,通常要求达到第三范式(3NF),有时为了性能会适当反规范化。
-
1NF:属性不可再分。
-
2NF:消除非主属性对码的部分函数依赖。
-
3NF:消除非主属性对码的传递函数依赖。
-
BCNF:消除主属性对码的部分和传递函数依赖。
3. 用户子模式(外模式)设计
根据局部应用需求,设计用户视图。这包括:
-
使用更符合用户习惯的别名。
-
针对不同用户定义不同的视图。
-
简化用户对数据的查询操作。
4. 完整性约束设计
-
实体完整性:定义主键(Primary Key)。
-
参照完整性:定义外键(Foreign Key)及级联操作(CASCADE, SET NULL等)。
-
用户定义完整性:定义CHECK约束、NOT NULL、DEFAULT等。
三、示例

学生(++学号++,姓名,性别,年龄,系编号)
课程(++课程号++,课程名)
教师(++教师号++,姓名,性别,职称,系编号)
系(++系编号++,系名,电话)
讲授(++教师号,课程号++)
选修(++学号,课程号++,成绩)


主键用下划线,外键用波浪线