(四)数据建模和数据库设计

学习内容

数据建模
数据库设计

软件开发的步骤

大致分为:

  1. 需求分析
  2. 系统设计
  3. 编码实现
  4. 系统测试
  5. 运行维护

系统设计中一个重要的环节就是数据库设计

数据库设计的时候需要先进行数据建模(实体关系图 E-R图)

数据建模的依据就是前期所做的需求分析

数据建模

1.Model of system in client’s mind
2.Entity model of client’s model
3.Table model of entity model
4.Tables on disk
在这里插入图片描述

实体-关系图

  • 实体-关系图(Entity Relationship Diagram),也称为E-R图,提供了表示实体、属性和关系的方法,用来描述现实世界的概念模型。

  • 构成E-R图的基本要素是实体、属性和关系

  • 实体(Entity):实体用来表示具有相同特征和性质的事物(类似于java的类),实体由实体名和实体属性来表示。

  • 属性(Attribute):实体所具有的某一特性,一个实体可以有若干个属性

  • 关系(Relationship):实体彼此之间相互连接的方式称为关系。一般可分为以下 3 种类型:
    一对一关系 (1 ∶ 1)
    一对多关系 (1 ∶ N)
    多对多关系 (M ∶ N)

may-be 和 must-be

  • 在实体与实体之间的关系中,都会存在着may-be和must-be这俩种情况,例如:
    系统中有顾客和订单俩个实体(1:N关系),一个顾客对应多个订单,一个订单对应一个顾客,而且一个顾客可以(may be)没有订单和他对应,一个订单一定(must be)会有顾客和它对应.

ER图中符号的表示

1)# : 唯一, 以后可能表示为主键
2)* : 非空
3)o : 可有可无
4)虚线: may be 顾客这边虚线,顾客可能没有订单
5)实线: must be 订单这边实线,订单一定是属于某个客户。
6)竖杠(|): 代表要强制在(|)一方建立一个联合主键,将对方ID拿过来做联合主键
7)伞状图标代表多的一方,不是伞状图标则代表一的一方

数据库设计

  • 数据建模完成之后,可以把ER图转换成数据中的表
  1. 实体的名字转换为表的名字
  2. 实体的属性转换为表中的列
  3. 具有唯一特点的属性设置为表中的主键
  4. 根据实体之间的关系设置为表中某列为外键列(主外键关联)
    注意:第四步主要是:实体关系—>表关系
  • 设计关系数据库时,遵从不同的规范要求,才能设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

  • 目前关系数据库有六种范式:
    第一范式(1NF)
    第二范式(2NF)
    第三范式(3NF)

    巴斯-科德范式(BCNF)
    第四范式(4NF)
    第五范式(5NF,又称完美范式)

  • 注:满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了

第一范式:

  • 一个表中,每个列里面的值是不能再分割的.
    例如这样设计一张表:
    表中有一个列是:爱好
    这个列的值可能会是这样:足球篮球乒乓球
    但是这值是可以再分割的:足球、篮球、乒乓球
    所以这种设计是不满足第一范式

第二范式:

  • 第二范式是在满足第一范式的基础上
    • 表中的非主键列都必须依赖于主键列
      例如这样设计一张表:
      订单表: 订单编号 是主键
      订单编号 订单名称 订单日期 订单中产品的生产地
    • 这几个非主键列中,产品生产地是不依赖于订单编号的,所以这种设计是不满足第二范式

第三范式:

  • 第三范式是在满足第二范式的基础上
    • 表中的非主键列都必须直接依赖于主键列,而不能间接的依赖.
      (不能产生依赖传递)
      例如这样设计一张表:
      订单表: 订单编号 是主键
      订单编号 订单名称 顾客编号 顾客姓名

    • 顾客编号依赖于订单编号,顾客姓名依赖于顾客编号,从而顾客姓名间接的依赖于订单编号,那么这里产生了依赖传递,所以这个设计是不满足第三范式的

了解主键和外键

主键

  1. 能做主键的列必要满足非空唯一的特点
  2. 只要满足非空唯一的任何列都可以做主键
  3. 可以让表中一个有意义的列做主键,比如说学号,它既表示学生学号又作为表中的主键,因为这个列满足非空唯一的条件
  4. 也可以找一个没有意义的列做主键,就是用来唯一标识一行记录的,例如ID
  5. 我们可以让多个列联合在一起做表中的主键,那么它就是联合主键,要求这几个列的值联合在一起是非空唯一的

外键

  1. 表中的某一个列声明为外键列,一般这个外键列的值都会引用于另外一张表的主键列的值(有唯一约束的列就可以,不一定非要引用主键列)
  2. 另外一张表的主键列中出现过的值都可以在外键列中使用,没有出现过的值,都不能使用
  3. 外键列值也可以为空的,提前是这个外键列在表中不做主键,因为我们也可以把表中的外键列当做主键来使用(只有满足非空唯一的要求就可以)
  4. 如果把B表中的联合主键的值引用到A表中做外键,因为是俩个列在B表中做联合主键,那么A表引用过来的时候也要把俩个列的值都引用过来,那么它们在A表中就会作为一个联合外键出现

总结

今天学习了数据建模和数据库设计相关概念知识。

Oracle day4+

学习内容

建表

建表的格式

  • create table 表名(
    列名1 数据类型 列级约束,
    列名2 数据类型 列级约束,
    列名3 数据类型 列级约束,
    列名4 数据类型 列级约束
    );

  • create table 表名(
    列名1 数据类型 ,
    列名2 数据类型 ,
    列名3 数据类型 列级约束,
    列名4 数据类型 列级约束,
    表级约束1,
    表级约束2
    );

  • 建表过程中,需要:

    1. 关键字
    2. 表名
    3. 列名
    4. 数据类型
    5. 约束
    6. 固定格式
  • 约束分为列级约束和表级约束,都是对值进行约束。如列的值不能为空,列的值必须是唯一的等约束。
    注:列级约束也称为行级约束

  • 列级约束和表级约束可以写也可以不写。例如:

    create table 表名(
    列名1 数据类型,
    列名2 数据类型,
    列名3 数据类型,
    列名4 数据类型
    );

表名

  1. 字母开头
  2. 1-30个字符长度
  3. 只能出现A–Z, a–z, 0–9, _, $, #
  4. 不能和对象名重复
  5. 不能是数据库中关键字

列的常用数据类型

  1. char
  2. varchar
  3. varchar2
  4. number
  5. date
    其他类型 BLOB CLOB
    BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的

char varchar varchar2的区别及特点

  1. CHAR长度固定,VARCHAR2的长度可变;
  2. CHAR效率比VARCHAR2的效率稍高;
  3. VARCHAR是数据库标准的字符类型;
  4. VARCHAR2是Oracle自己开发的数据类型;
  5. VARCHAR2存储NULL值;
  6. Oracle建议使用VARCHAR2。

列的约束

1.主键约束 PRIMARY KEY primary key
2.外键约束 FOREIGN KEY foreign key
3.唯一约束 UNIQUE unique
4.非空约束 NOT NULL not null
5.ch

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值