数据库逻辑结构设计

逻辑结构设计核心任务是将概念模型(通常是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等。

三、示例

学生(++学号++,姓名,性别,年龄,系编号)

课程(++课程号++,课程名)

教师(++教师号++,姓名,性别,职称,系编号)

系(++系编号++,系名,电话)

讲授(++教师号,课程号++)

选修(++学号,课程号++,成绩)

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

相关推荐
程序员清风4 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
正在走向自律5 小时前
数据集成产品的技术底座:从日志解析原理到 KFS 同步链路搭建(含建表与增删改查完整代码)
数据库·oracle·信创·数据集成·国产数据库·kingbasees·全量+增量同步
程序员塔塔喵5 小时前
【MySQL篇|第七篇】MySQL事务
数据库·mysql·mysql事务
独隅6 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
_孤傲_6 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
数字新视界8 小时前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB8 小时前
从 StarRocks 走向 Apache Doris:如何实现引擎平滑替换与架构升级?
大数据·数据库·数据分析
为思念酝酿的痛8 小时前
MySQL的操作
数据库·mysql
猫咪很可爱9 小时前
Oracle ORA-4031 错误分析与处理:SGA 内存不足导致 update/exp/expdp 失败
数据库·oracle
小豆庄9 小时前
视频素材处理时的隐私盲区:云处理与本地处理的边界在哪
数据库·图像处理·视频·敏捷流程