数据库逻辑结构设计

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

三、示例

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

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

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

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

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

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

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

相关推荐
howdoyoudo2026061 小时前
当新案例冲击旧框架:分类系统的宿命与修正路径
大数据·网络·数据库·人工智能·安全·ai·分类
自己的九又四分之三站台1 小时前
GeoPackage 到底适合什么场景:从 SQLite 容器到空间数据格式选型
数据库·oracle·sqlite
东方护航数据恢复(深圳)2 小时前
勒索病毒加密数据库怎么办?深圳 0 赎金解密恢复实录【东方护航数据恢复深圳店】
数据库·数据恢复·服务器数据恢复·勒索病毒·数据镜像
倔强的石头_2 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
数据库
苦瓜打怪兽2 小时前
PostgreSQL 报错“字段 datlastsysoid 不存在”排查与解决
数据库·postgresql
XLYcmy2 小时前
PDF 论文处理器 — 技术报告文档
数据库·python·网络安全·pdf·embedding·dify·rag
ShineWinsu2 小时前
对于Redis:RDB持久化的解析
linux·数据库·redis·缓存·面试·持久化·rdb
做运维的阿瑞2 小时前
MYSQL从语义到执行计划:UNION、EXISTS、IN 的深度辨析
数据库·sql·mysql
Elastic 中国社区官方博客12 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索