【机房收费系统】数据库设计
概述本文介绍基于机房收费系统 基本遵循三范式的数据库设计。
仅满足最基本功能需求。不包括额外的信息保存。
回想
关系模式设计的好坏直接影响到数据冗余度和数据一致性等问题。
由此我们有了一个评价指标。即范式。
第一范式:关系模式R的每一个关系r的属性值都是不可分的原子值
第二范式:关系模式R是1NF且每一个非主属性全然依赖于候选键
第三范式:关系模式R是1NF且每一个非主属性都不传递依赖于R的候选键
ER图
ER图转换成关系模式集的算法
步骤一(实体类型的转换)
将每一个实体类型转换成一个关系模式。实体的属性即为关系模型的属性,实体标识符即为关系模式的键。
由此得到学生表卡表 工作人员表基本数据表和机器表。因为机器仅仅有一个属性,可与其它合并。
步骤二(联系类型的转换)依据不同情况做不同的处理。
步骤2.1 二元联系类型的转换
1)若实体间联系是1:1可在两个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键。
2)若实体联系是1:N则在N端实体类型转换成关系模式中增加1端实体类型的键作为外键和联系类型的属性。
3)若实体间联系是M:N,则将联系类型也转换成关系模型。其属性为两端实体类型的键(作为外键)加上联系类型的属性。而键为两段实体间的组合。
即得
步骤2.2一元联系类型的转换
和二元联系类型的转换类似。
步骤2.3(三元联系类型的转换)
1)若实体间联系是1:1:1 能够再三个实体类型转换成三个关系模式中随意一二关系模式的属性中增加另两个关系模式的键(作为外键)和联系类型的属性。
2)若实体间联系是1:1:N 则在N端实体类型转换成关系模式中增加两个1端实体类型的键(作为外键)和联系类型的属性。
3)若实体间联系是M:N:P,则将联系类型也转换成关系模式,其属性为是那段实体类型的键(作为外键)加上联系类型的属性,二键为三端实体键的组合。
由此得到
以上为个人理解,在实际实现中还会有想的不到的地方稍有改动。有不妥之处欢迎指导。
相关文章
- Linux系统:Centos7下搭建PostgreSQL关系型数据库
- python清除数据库错误日志
- IntelliJ IDEA 查看数据库插件(很强大的一个插件)
- 闪存存储特性以及数据库相关优化思路
- 缓存与数据库一致性保证
- 如何手动删除Oracle 11g数据库
- “阿里爸爸”最新 Java 面试指南,基础 + 框架 + 数据库 + 系统设计 + 算法
- qt中连接sqlite数据库提示QSQLITE driver not loaded解决办法(重要)
- 【Java】+操作数据库
- Windos系统用PL/SQL Developer软件进行Oracle数据库备份/迁移
- 一篇好文之Android数据库 GreenDao的完全解析
- Android 数据库 ObjectBox 源码解析
- nsswitch.conf - 系统数据库及名字服务开关配置文件
- c 语言写的高级Oracle®数据库调优及监控工具
- SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb。
- laravel的模型和数据库基础操作
- 分销系统的用户关系,用户与推广链接的数据库设计。设计思路
- JAVA控制台下:商城购物系统(一)数据库设计
- 审计系统---堡垒机项目之用户交互+session日志写入数据库[完整版]
- DB2数据库应用系统性能优化深入探究
- 数据库复习1——数据库体系结构和关系系统
- 在从该备份集进行读取时,RESTORE 检测到在数据库 "CISDB" 中的页(0:0)上存在错误。系统断定检查已失败
- 用户管理模块数据库设计
- SQL Server5个系统数据库
- Oracle 数据库,远程访问 ora-12541:TNS:无监听程序
- 系统架构设计师-关系型数据库与NoSQL数据库优缺点分析
- 重构的过程记录--之利用系统数据库:
- Unity笔记-25-简单的商城系统&数据库操作
- 使用Navicat进行数据库对比同步
- MySQL 数据库的常见命令