关系型数据库(四)数据库的设计

为什么要先设计不直接编码

按照项目的正规流程必须先设计再开发,必须先出设计方案,经评审会议审核通过才能进行编码开发,而且设计文档,也是交付项目客户付款的必要条件之一。

而且先进行设计也是为了我们理清思路的必要条件,我们说真正的开发中设计占到80%的时间或者更多,写代码占到20%左右时间

看一下数据中台数据库设计的实际例子

数据库设计最终目的就是如何将需求转换为二维表的过程。

和java里建类一样

Java工作中如何使用数据库的例子,以酒店管理系统举例

首先我们有了展示歌手信息的需求,有了管理歌手信息的需求,那么我们需要把需求中的歌手,转换为(抽象成实体信息) ,为歌手建模,1.明确歌手有哪些属性,歌手和其他实体有没有关联。2.画出歌手的ER图,实体关系图 3.根据ER图建表4.使用JAVA程序连接数据库用程序来调用歌手信息

数据库设计

  1. 首先将现实世界的类抽象成实体
  2. 建立ER图
  3. 建表

专业的ER图工具有 PowerDesigner Microsoft Office Visio

我经常使用的是

https://www.processon.com/ 在线工具

ER举例

  1. 实体 用户就是一个实体,ER图中用矩形表示
  2. 实体中的属性  用与实体相连的椭圆表示

  3. 实体中的主标识 比如 用户编号,属性下面加下划线表示,能够代表这个用户的唯一性

4.实体间的联系,也叫关系

实体间的关系通常有:1对1(1:1),1对多(1:m),多对多(m:n)等

一对一:一对一关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。

公民和身份证号就是1对1的关系

 

男女朋友就是一对一关系

一对多:一对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系

一个班级有多个学生班级和学生就是1对多的关系,班级是1方,学生是多方,用1:n或是1:m表示

单位和职员,它们的关系就是1:n,一个单位可以有多个职员

分类和商品,它们的关系就是1:n,一个分类有多个商品

多对多:多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。

课程和学生就是多对多关系,一个课程有多个学生选,一个学生可以选多个课程

关系用m:n 或用m:n,或用n:n

例子

问题描述:

  • 一个学生可选修多门课,一门课有若干学生选修;
  • 一个教师可讲授多门课,一门课只有一个教师讲授;
  • 一个学生选修一门课,仅有一个成绩。
  • 学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。

 

ER图画完,我们就要设计表结构

关系模式 表的逻辑结构和特征的描述

 E-R图转换为表的规则

每个实体转化为一张表Employees,实体的主标识EID称为主键

组合属性Address,city street state 三个属性  将其子属性转化为表中的属性

多值属性(Hobbies 一个人的爱好有多个 称为多值属性)和实体的主标识属性组合转化为一张表,通过EID和Employees表关联

1.1:1的联系不必引入关系表

将关系的属性(allowance)及非多方(1.老师表)的主标识(tid)加入到多方表(m 课程表)

多方表的外键是非多方实体的主标识

外键就是在一个表中引用了另一个表的主键tid

3.对于M:N(多对多)的关系我们要引入关系表(中间表)

将关系的属性及两个实体的主标识(id)形成关系表。

关系表的主键为两个实体主标识的组合 主键就是唯一标识这条数据的值

例2

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值