当前课程知识点:数据库技术应用 > 学习情境一、银行存取款机数据库创建与管理 > 模块4、银行存取款机数据库的设计 > 1.4.1数据库的概念模型设计
大家好
欢迎来到数据库技术应用在线开放课程
今天要完成的任务是
设计数据库BankDB的概念模型
那设计之前我先给大家看两个方案
首先A同学设计的方案
大家来看
根据前面我们做的需求
A同学把它设计成了一张表
包括用户编号、用户名、联系方式
卡号、密码、交易类型、交易金额和余额几个字段
B同学的设计方案
是把我们前面所做的需求
设计成了三张表
第一张表里包括用户编号、用户名和联系方式
第二张表里包括卡号、密码和余额
第三张表里包括卡号交易类型和交易金额
那么A和B两位同学谁设计的方案更合理呢
如果用它们的表记录一千人每人两张卡
每张卡二十次的交易记录
那么A同学和B同学个又需要填写多少个数据呢
我们来分析一下
首先对于A同学的方案来说
它填写的数据数应该是一千乘二乘二十乘八
是32万数据量
对于B同学来说
分成三张表来看
第一张表是一千乘以三是三千个数据
第二张表一千乘以二乘以三是六千条数据
第三张表一千乘以二乘以二十乘以三是十二万个数据
那么把三个表加在一起
一共是十二万九千数据
那么A同学是三十二万数据
B同学是十二万九千数据
我们来对比一下
很显然B同学的方案要好一些
因为它减少了数据冗余
可以提高我们将来的查询效率
那怎么能设计出这三张表呢
或者说我们做数据库设计的好处是什么呢
我们来看一下
如果大家做了一个良好的数据库设计
它既可以节省数据的存储空间
又能保证数据的完整性
还能方便进行数据应用系统的开发
那如果你做的数据库设计不好
也就是糟糕的数据库设计
它可以带来数据冗余
存储空间内存空间浪费的情况
而且将来在做数据更新和插入的时候还可能出现异常
那么我们这节课的目标
就是带着大家了解数据库设计的基本步骤
理解数据库设计的意义
掌握E-R图进行数据库设计的知识
数据库设计的步骤
我们把它分成三个
首先我们要把现实世界抽象成概念模型
其次我们需要把概念模型转换成数据模型
最后我们还要根据实际情况
对我们转换好的数据模型进行优化
然后才能真正的存放到我们的数据库当中
今天我们先来看概念模型设计
要想做概念模型设计
大家需要知道概念模型设计之后
我需要提交一个什么样的产物呢
我们需要提交的一个作品就是E-R图把它翻译过来
就是实体联系图
那么如果想画实体联系图
我们需要知道几个概念
也需要知道这些概念所用来表示的图形
首先我们来看第一个叫实体
什么叫实体呢
它是指现实世界当中客观存在的
并且可以相互区分的事物
第一点客观存在
第二点可以相互区分
最后它是一个事物
也就是说它是一个名词
那么实体我们在E-R图当中是用矩形框来表示的
大家看到的图里的这些都是实体
这里面都是大家熟悉的生活
当中的一些物品和事物
那么大家需要思考一下
对于我们要完成了
这个任务数据库BankDB来说
它应该有哪些实体
第二个概念
我们叫联系
实体我们知道了
那么我们在解决一个实际问题的时候
它会有很多实体构成
那实体和实体之间是存在联系的
万物存在联系,
所以我们需要明确实体和实体之间的联系类型
我们在数据库当中把它分成三种
第一种叫一对一联系
第二种叫一对多联系
第三种较多对多联系
那么这个联系呢
我需要用菱形框来表示
我们来看三个例子
首先班级和班长是哪一种联系类型呢
我们来分析一下
一个班级只有一个班长
一个班长只属于一个班级
那么我们就确定班级和班长之间是一对一的联系类型
那班级和学生呢
我们再来看
一个班级有多个学生
一个学生它只属于一个班级
两侧都看好之后
我来确定它是一对多的联系类型
那么在判断一对多的时候
大家一定要注意
一定是两侧都需要判断才能确定
否则容易出现错误
第三个学生和课程
一个学生可以选多门课程
那么一门课程也可以由多个学生来选
那么我们判断学生和课程之间
是多对多的联系类型
那么大家也可以思考一下
对于我们BankDB来说
实体和实体之间又是什么样的联系类型呢
第三个叫属性
什么是属性指的是实体具有的特征
我们的属性是用椭圆来表示的
对于班级来说
它有班级编号、班级名称、班主任这几个属性构成
而对于学生来说
有学号有姓名有性别这几个属性来确定
那么除此之外
肯定还有其它的属性
我们需要根据用户的需求
一个一个的把属性全部都找出来
放在我们的椭圆里
那么在众多的属性当中
有一个特别重要的属性
它是唯一标识
每个实体的属性或者属性的集合
我们把它叫做主键
那对于班级来说
靠什么来区分各个班级
我们是靠班级编号来确定的
所以班级编号就是班级的主键
对于学生实体来说
我们靠什么来区分每个学生
大家很清楚是靠学号来区分的
所以学号是学生的主键
那同样的道理
对于图书来说
我们需要靠图书编号去唯一识别每一本书
那选课呢
这个难度要比前三个要大一些
选课大家想要知道它不是名词
它是什么词是动词?
所以这个选课实际上
它是一个联系
它建立的是学生和课程之间的联系
那么它的主键是什么
很简单就是学生的主键和课程的主键加在一起
构成了中间这个联系
选课的主键也就是学号加课程号
就是刚刚咱们说的属性的集合
有了这些知识储备
我们来看一下一个宿舍有多个学生
一个学生住一个宿舍
学生住宿就产生住宿费
怎么来画这个问题的E-R图
首先第一件事找实体
这里面客观存在
并且可以相互区分的名词有什么
有学生有宿舍
我把学生和宿舍分别画在两个矩形框了
那么用什么来描述学生呢
大家在题里找一找
有学号、姓名、性别
我分别画在椭圆里
然后用线段和学生进行一个连接
同样的道理
楼号房间号人数是用来描述宿舍的属性
我也把它画在椭圆里
并且用线段和宿舍做一个链接
那么还有一句话我们没有用到
学生住宿就产生住宿费
其实是告诉大家
学生和宿舍之间的联系是住宿画在菱形框里
并且只要学生一住宿就有住宿费
所以住宿费放在住宿里
作为它的属性出现
那好一个学生住几个宿舍
一个宿舍
一个宿舍有多少个学生
多个学生那宿舍和学生两边的实体
它线段上要放联系的类型
就是我们刚才分析的一对多
那么E-R就画出来了
大家来看一下
接下来进入我们的任务实施环节
那对于我们的银行自动存取款机来说
它的概念模型是什么样子呢
我们首先还是找实体
对于之前大家看到的动画
我们银行自动存取款机的需求来说
我们去找它的实体里面肯定有什么
肯定有用户还有什么
我刚才拿到的那个银行卡
还有就是交易信息
那么对于这些实体来说
我们需要找一下用什么来描述它呢
对于用户来说
有用户编号、用户名、身份证号、联系电话和地址
而对于银行卡来说
有银行卡号、密码、货币类型余额
开户日期还有是否挂失
而对于交易信息来说
肯定要存的是交易的编号、交易的日期
交易类型、交易的金额还有一些备注信息
有了这些属性之后
我们接下来来确定用户银行卡和交易信息
它们三个实体之间的联系
首先用户和银行卡来说
一个用户有多张卡
那么一张卡它只属于一个用户
所以用户和银行卡是一对多的联系
那银行卡和交易信息呢
一张银行卡可以有多个交易信息
一个交易信息它只能对应一张银行卡
所以银行卡和交易信息之间也是一对多的联系
那么有了实体
有了属性
有了联系我们的E-R图就可以画出来了
大家注意所有的线都是线段
都是线段
要把我们的联系类型化在两边的线段上
好今天的拓展任务是
员工管理数据库EmployeeDB的概念模型设计
感谢大家的聆听
-模块1、数据库的基础知识
--数据库的基础知识
-模块2、MYSQL介绍与安装
--MYSQL介绍与安装
-模块3、银行存取款机数据库的创建与维护
--银行存取款机数据库的创建与维护
-模块4、银行存取款机数据库的设计
--银行存取款机数据库的设计
-模块1、表的创建
--2.1表的创建
--表的创建
-模块2、表的管理
--2.2表的管理
--表的管理
-模块3、索引
--2.3索引
--索引
-实践小课堂:宠物电商管理平台数据库和表的创建
-模块1、银行存取款机数据插入、修改和删除
--银行存取款机数据插入、修改和删除
-模块2、银行存取款机简单查询
--银行存取款机简单查询和统计查询
-模块3、银行存取款机连接查询
--3.3连接查询
--银行存取款机连接查询
-模块4、银行存取款机子查询
--3.4子查询
--银行存取款机子查询
-模块5、银行存取款机分类汇总与排序
--银行存取款机分类汇总与排序
-模块6、银行存取款机视图
--银行存取款机视图
-模块1、银行存取款机存储过程
--4.1.2事务
--银行存取款机存储过程
-模块2、银行存取款机触发器
--银行存取款机触发器
-模块1、MYSQL用户管理
--MYSQL用户管理
-模块2、MYSQL权限管理
--MYSQL权限管理
-模块3、MYSQL数据库的锁机制
--MYSQL数据库的锁机制
-模块4、MYSQL备份和恢复
--MYSQL备份和恢复