带你深入了解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 图

带你深入了解Java!二十九、数据库设计!
详细设计:
先进行规范化,然后进行模型图绘制
带你深入了解Java!二十九、数据库设计!

三、掌握绘制数据库的模型图

二维模型图: Visio PowerDesigner
带你深入了解Java!二十九、数据库设计!

四、掌握数据库设计的三大范式

  • 1、确保每列的原子性,即一张表中每个字段存储信息必须足够单一
  • 2、一张表只能标识一件事,如果一张表中描述过多的事情,会导致数据冗余和不完整
  • 3、表的字段之间不允许传递依赖
    A ——> B ——> C A和C就是传递依赖
    可以到时候将传递依赖的信息抽取到多张表或者一张数据字典表
    数据字典表:
    **类型:**大床房、双人间、单人间、豪华双人间……
    **客房状态:**已预定、已入住、空闲
    **酒店设施:**有无早餐、有无空调、有无外窗、有无wifl、有无停车位……

规范化和实际性能/复杂度等方面的关系:
为了降低查询复杂度和提升性能:

  • 1、 允许一定的冗余列
  • 2、 允许一些特别的计算列

根据实际情况和需求决定规范和性能的取舍

五、掌握用户管理和用户授权

带你深入了解Java!二十九、数据库设计!