带你深入了解Java!二十九、数据库设计!
< 数据库设计 >
一、了解设计数据库的步骤
数据库设计的作用:
- 随着项目规模变大、设计变得越来越重要
-
良好的数据库:
设计能节省数据的存储空间、能够保证数据的完整性、方便进行数据库应用系统的开发 -
糟糕的数据库设计:
会产生数据的冗余、存储空间的浪费、内存空间浪费、数据更新和插入异常
数据库的设计步骤(生命周期):
- 1、需求分析 明确甲方意图
- 2、概要设计 E-R图 保证需求完整
- 3、 详细设计 利用三大范式进行完整 规范化
- 4、代码编写 构建真的数据库 添加数据测试
- 5、软件测试 测试数据库是否满足真实场景的需求
- 6、安装部署 试运行阶段
- 7、生产环境使用
小布快跑,快速迭代(更新)
敏捷开发DevOps
需求:设计一个酒店管理系统,能够实现旅客入住手续金额客房旅馆
1、需求分析
- 1)、手机信息 与有关人员进行沟通、座谈,详细了解相应的需求
- 2)、标识实体 存储各类信息
旅客信息 、客房信息 - 3)、标识实体属性
旅客:
编号、姓名、性别、身份证号、手机号、入住时间、退房时间、押金、消费总金额、入住客房
客房:
编号、客房号、客房类型、客房床位数、客房入住人数、客房状态 - 4)标识实体关系
旅客入住客房(实体关系分类)
2、概要设计 E-R
实体关系分类:
-
1)、一对多
房间对客人 -
2)、多对一
客人对房间 -
3)、 多对多
学生课程、商品订单 -
4)、一对一 ,因为这种关系完全可以房子一张表中
身份证唯一,属于一个公民
二、掌握回值数据库的 E-R 图
详细设计:
先进行规范化,然后进行模型图绘制
三、掌握绘制数据库的模型图
二维模型图: Visio PowerDesigner
四、掌握数据库设计的三大范式
- 1、确保每列的原子性,即一张表中每个字段存储信息必须足够单一
- 2、一张表只能标识一件事,如果一张表中描述过多的事情,会导致数据冗余和不完整
-
3、表的字段之间不允许传递依赖
A ——> B ——> C A和C就是传递依赖
可以到时候将传递依赖的信息抽取到多张表或者一张数据字典表
数据字典表:
**类型:**大床房、双人间、单人间、豪华双人间……
**客房状态:**已预定、已入住、空闲
**酒店设施:**有无早餐、有无空调、有无外窗、有无wifl、有无停车位……
规范化和实际性能/复杂度等方面的关系:
为了降低查询复杂度和提升性能:
- 1、 允许一定的冗余列
- 2、 允许一些特别的计算列
根据实际情况和需求决定规范和性能的取舍