精华内容
下载资源
问答
  • 数据库关系模型ppt

    2013-07-08 21:28:22
    数据库关系模型ppt
  • 数据库关系模型基本概念

    千次阅读 2020-09-25 23:01:05
    0.什么是关系模型? 1.关系模型以表为基本结构 2.包括了基本的操作:并,差,广义积,选择,投影 以及拓展的操作:交,连接,除 3.还有完整性约束:实体完整性,参照完整性,用户自定义完整性。 1.什么是关系?什么...

    0.什么是关系模型?

    1.关系模型以表为基本结构
    2.包括了基本的操作:并,差,广义积,选择,投影 以及拓展的操作:交,连接,除
    3.还有完整性约束:实体完整性,参照完整性,用户自定义完整性。
    

    1.什么是关系?什么是表?

    关系是所有域的笛卡尔积的子集,关系是严格的数学定义,是一个集合,不允许有相同的元组出现。
    表是现代数据库依照关系的理论基础,它允许有相同的记录。
    

    2.关系模型有哪些操作?

    基本的操作:并,差,广义积,选择,投影
    拓展的操作:交,连接,除
    

    3.关系模型的完整性有哪些?

    实体完整性(主键不能为空)    #针对主键
    参照完整性(外键可以为空,但是必须存在与它所在主键的表中)   #针对外键
    用户自定义完整性(例如 性别只能是男或者女而不能是其他,由用户自己定义)
    

    4.什么是候选键(码)?

    可以唯一标识任意一行的属性。关系中的一个属性组,其值能够唯一标识一个元组。
    

    5.什么是主键?什么是主属性?

    选择一个候选键作为主键。(数据库常以主码为线索管理)
    主属性是候选键中的任一属性。其他属性则为非主属性。
    

    6.什么是外键?

    关系R中的一个属性组,***他不是R的候选码***,但它**是与另一个关系S的候选键码相对应**
    
    展开全文
  • 数据库 关系模型的基本概念

    千次阅读 2020-03-03 14:23:51
    关系模型中:关系、目或度、关系模式、域、元组、属性、分量、主码、外码等名词的解释。

    关系(Relation

    D1 × D2 × ··· × Dn 的子集叫做在域D1,D2,···,Dn 上的关系,表示为 R(D1,D2,···,Dn ),其中R就是关系名,n就是目或度。
    一个关系对应一张二维表,二维表就是关系名。

    • 例如,下图中的整个二维表的值就是一个关系
      01

    目 或 度(degree

    二维表关系R(D1,D2,···,Dn )中的 n 就是关系的

    关系模式(Relation Schema

    在二维表中的行定义,即对关系的描述称为关系模式。

    • 一般表示为(属性1,属性2,…,属性n)
    • 例如:老师的关系模型可以表示为教师(教师号,姓名,性别,年龄,职称,所在系)。

    (值)域(domain

    域是一组具有相同数据类型的值的集合。
    二维表中每列对应一个域。

    • 表述的是属性值的取值范围为值域。同一种类型的数据集合,都是某一个事物的值的集合。
    • 例如:自然数、整数、{男,女}、不大于10的正整数等。
    • 例如:上述关系中的D1 = 学号集合 = {S3001,S3002,S4001}; D2 = 姓名集合 = {张明,李静,赵丽} 等就是域。

    元组(tuple

    笛卡尔积中每一个元素(d1,d2,···,dn),叫作一个n元组(n-tuple)或简称元组。
    二维表中每行对应一个元组。
    关系是一张表, 表中的每行(即数据库中的每条记录)就是一个元组;

    • 在二维表里,元组也称为行。
    • 例如:关系中的某一行
      02

    属性(attribute

    在二维表中为了区分不同的域而对每列取一个名字,称为属性。
    属性的个数称为关系目或度,即 n目关系必有n个属性。
    列的值称为属性值;

    • 例如:二维表中的学号、姓名、性别等都是属性。
      03

    分量(component

    元素中每一个值 di 都叫做一个分量
    为每一行对应的列的属性值,即元组中的一个属性值。

    • 例如:关系中某一行中的S3001、张明、男、外语等等。

    候选码 (候选建)(candidate key

    若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码

    • 例如:在选课表中,只有属性组“学号”和“课程号”才能唯一地标识一个元组,则候选键为(学号,课程号)。
      04

    主码(primary key

    在一个关系的若干候选码中指定一个用来唯一标识该关系的元组,则称这个被指定的候选码称为主关键字,或简称为主键、关键字、主码
    主码不一定只有一个,但是一定要有。

    • 在有多个候选码的情况下,主码是由人为选择的。

    主属性 & 非主属性(prime attribute & non-prime attribute

    关系中包含在任何一个候选码中的属性称为主属性,不包含在任何一个候选码中的属性为非主属性非码属性(non-key attribute

    • 例如关系中的学号、课程号就是主属性;而性别、年龄就是非主属性或非码属性。

      01

    全码(all-key

    在最极端条件下,关系模式中的所有属性都是这个关系模式的候选码,称为全码

    外码(foreign key)

    一个关系R中的一个属性是另外一个关系F中的主码,则关系R中的这个属性称为外码。

    • 有两个实体:其中加粗的属性是主码。
    • 学生(学号,姓名,性别,专业号);专业(专业号,专业名)
    • 则对专业表来说:专业号是专业表的主码;
    • 对学生表来说:专业号是学生表的外码;学号是学生表的主码;

    笛卡尔积(cartesian product

    笛卡尔积是域上的一种集合运算。

    • 给定一组域D1,D2,···,Dn,允许其中的某些域是相同的,D1,D2,···,Dn的笛卡尔积为:D1 × D2 × ··· × Dn = {(d1,d2,···,dn)| di ∈ Di,i = 1,2,···,n}

    资料参考

    展开全文
  • 数据库关系模型

    2008-05-11 10:57:16
    数据库关系模型 aa
  • 数据库关系模型介绍

    2011-01-07 08:35:44
    PPT档案,详细介绍了数据库关系模型,对于DB开发人员来说有很大的帮助.
  • 数据库关系模型课件

    2015-06-03 15:17:03
    系中国一流大学数据库课件PPT 第三章关系模型 欢迎讨论
  • 数据库关系模型理论

    2007-12-10 12:15:54
    上海交大软件学院 用于数据库关系模型理论教学的ppt 便于很好的理解了原理
  • 关系数据库模型设计

    千次阅读 2020-05-19 17:13:17
    本文从现实世界-概念世界(信息世界)-机器世界(数据世界)逐级抽象,旨在以浅显易懂的语言描述关系数据库应该如何建模,最后用简单名了的描述给出关系模型的设计范式的含义。

    目录

     

    三个世界的划分

    1.现实世界

    2.概念世界(信息世界)

    3.机器世界(数据世界)

    模型

    一、概念模型(信息世界)

    (一)E-R图的三要素

    (二)E-R图的设计方法

    (三)E-R模型到关系模型的转换

    (四)小结

    二、数据模型(数据世界)

    (一)层次模型

    (二)网状模型

    (三)关系模型


    三个世界的划分

    人们把客观存在的事物以数据的形式存储到计算机中,经历了对现实生活中事物特性的认识、概念化到计算机数据库里的具体表示的逐级抽象过程,即现实世界-概念世界-机器世界三个领域。有时也将概念世界称为信息世界;将机器世界称为存储或数据世界。

     

    1.现实世界

    人们管理的对象存于现实世界中。现实世界的事物及事物之间存在着联系,这种联系是客观存在的,是由事物本身的性质决定的。例如学校的教学系统中有教师、学生、课程,教师为学生授课,学生选修课程并取得成绩。

     

    2.概念世界(信息世界)

    概念世界是现实世界在人们头脑中的反映,是对客观事物及其联系的一种抽象描述,从而产生概念模型。概念模型是现实世界到机器世界必然经过的中间层次。涉及到下面几个术语:
    实体:我们把客观存在并且可以相互区别的事物称为实体。实体可以是实际事物,也可以是抽象事件。如一个职工、一场比赛等。
    实体集:同一类实体的集合称为实体集。如全体职工。注意区分"型"与"值"的概念。如每个职工是职工实体"型"的一个具体"值。
    属性:描述实体的特性称为属性。如职工的职工号,姓名,性别,出生日期,职称等。
    联系:实体集之间的对应关系称为联系,它反映现实世界事物之间的相互关联。联系分为两种,一种是实体内部各属性之间的联系。另一种是实体之间的联系。

     

    3.机器世界(数据世界)

    存入计算机系统里的数据是将概念世界中的事物数据化的结果。为了准确地反映事物本身及事物之间的各种联系,数据库中的数据必须有一定的结构,这种结构用数据模型来表示。数据模型将概念世界中的实体,及实体间的联系进一步抽象成便于计算机处理的方式。三个世界中的术语对照关系如下:

     

    模型

    模型就是对不能直接观察的事物进行形象的描述和模拟。即模型是对现实世界中复杂事物的抽象描述。

    模型分为信息世界的概念模型和数据世界的数据模型:

    概念模型:把现实世界转换为信息世界的模型,例如E-R模型。

    数据模型:把信息世界转化为数据世界的模型,例如关系模型。

     

    一、概念模型(信息世界)

    实体联系模型,亦称实体关系模型,它是由美籍华裔计算机科学家陈品山(Peter Chen)发明,该模型直接从现实世界中抽象出实体类型和实体间联系,然后用实体联系图(E-R图)表示数据模型,是描述概念世界,建立概念模型的实用工具。所以,在信息世界中使用E-R图建立的数据模型称为E-R模型。

    实体关系模型是现实世界到概念世界的第一层抽象,是数据库设计人员进行数据库设计的有利的数据建模工具,也是数据库设计人员和用户之间进行交流的语言。

     

    (一)E-R图的三要素

    实体(Entity):在E-R图中用矩形表示,矩形框内标注实体名称。实体表示一个离散对象。实体可以被(粗略地)认为是名词,如计算机、雇员、歌曲、数学定理等。


    属性(Attribute):在E-R图中用椭圆形表示,并用无向连线将其与相应的实体连接起来,同时在无向连线旁标上联系的类型(1 : 1,1 : n或m : n)。属性描述实体的特性(特征性质),例如学生的姓名、学号、性别、都是属性。

     

    联系(Relationship):在E-R图中用菱形框表示,框内标注联系名称,并用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。联系可以被(粗略地)认为是动词,如:在公司和计算机之间的拥有关联,在雇员和部门之间的管理关联,在演员和歌曲之间的表演关联,在数学家和定理之间的证明关联等等。联系有三种类型:


    ① 一对一联系(1:1)
    设A、B为两个实体集。若A中的每个实体至多和B中的一个实体有联系,反过来,B中的每个实体至多和A中的一个实体有联系,称A对B或B对A是1:1联系。注意,1:1联系不一定都是一一对应的关系。可能存在着无对应。例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的,但经理也可能暂缺。


    ② 一对多联系(1:n)
    如果A实体集中的每个实体可以和B中的几个实体有联系,而B中的每个实体至少和A中的一个实体有联系,那么A对B属于1:n联系。例如,一个部门有多名职工,而一名职工只在一个部门就职,则部门与职工的联系是一对多的。


    ③ 多对多联系(m:n)
    若实体集A中的每个实体可与和B中的多个实体有联系,反过来,B中的每个实体也可以与A中的多个实体有联系,称A对B或B对A是m:n联系。例如,一个学生可以选修多门课程,一门课程由多个学生选修,学生和课程间的联系是多对多的。
     

    (二)E-R图的设计方法

    E-R图通常都应经过以下两个阶段:

    (1)针对每一用户画出该用户信息的局部E-R图,确定该用户视图的实体、属性和联系。需注意的是:能作为属性的就不要作为实体,这有利于E-R图的简化。

     

    (2)综合局部E-R图,生成总体E-R图。在综合过程中,同名实体只能出现一次,还要去掉不必要的联系,以便消除冗余。一般来说,从总体E-R图必须能导出原来的所有局部视图,包括实体、属性和联系。

     

    案例:工厂(包括厂名和厂长名)需要建立一个数据库系统,有以下情况:

     

    1、该工厂生产若干产品,每种产品由不同的零件组成

    2、有的零件可以用在不同的产品,这些零件由不同的原材料组成,不同的零件所用的原材料可以相同。

    3、零件按照所属的不同产品分别放在仓库中,原材料按照类别分别放在若干仓库中。

     

    相关性质如下:

    工厂:长号,长名,长址,厂长名

    车间:车间号,车间名,电话

    产品:产品名,品种号,性能

    零件:零件号,零件名,生产日期

    原材料:材料号,产地,等级

    仓库:库号,电话

     

    (三)E-R模型到关系模型的转换

    把E-R图转换为关系模型可遵循如下原则:

    (1)对于E—R图中每个实体集,都应转换为一个关系,该关系应包括对应实体的全部属性,并应根据关系所表达的语义确定哪个属性或哪几个属性组作为“主关键字”,主关键字用来标识实体。

     

    (2)对于E—R图中的联系,情况比较复杂,要根据实体联系方式的不同,采取不同的手段加以实现。下面着重讨论联系的转换方法。

    A、两实体集间1:n联系

    两实体集间1:n联系,可将“一方”实体的主关键字纳入“n方”实体集对应的关系中作为“外部关键字”,同时把联系的属性也一并纳入“n方”对应的关系中。

     

    B、两实体集间m:n联系

    对于两实体集间m:n联系,必须对“联系”单独建立一个关系,用来联系双方实体集。该关系的属性中至少要包括被它所联系的双方实体集的“主关键字”,并且如果联系有属性,也要归入这个关系中。

     

    C、两实体集间的1:1的联系

    假设A实体集与B实体集是1:1的联系,联系的转换有三种方法:

    ①把A实体集的主关键字加入到B实体集对应的关系中,如果联系有属性也一并加入;

    ②把B实体集的主关键字加入到A实体集对应的关系中,如果联系有属性也一并加入;

    ③建立第三个关系,关系中包含两个实体集的主关键字,如果联系有属性也一并加入。

     

    (四)小结

    (1)把现实世界转换成为计算机能够处理的数据世界,需经过两个阶段:

             第一个阶段需使用概念模型把现实世界抽象成信息世界,最常用的概念模型是E-R模型,E-R模型的三个基本要素是实体、

             属性和联系。

             第二阶段是使用数据模型把信息世界转换为数据世界,最常用的数据模型是关系模型。

     

    (2)设计E-R图一般经过两个步骤,

            第一步是抽象出各相关对象的局部E-R图,

            第二步是把局部E-R图组合成全局E-R图。E-R图只是信息的一种抽象表示,还需把它转化成相应的实施数据模型才能转化为

            数据库中的数据。把E-R图转化为关系模型,不但要把实体转化成关系,而且在关系中还应反映出E-R图中各实体集之间的

            联系。

     

    3E-R数据模型作为语义数据模型,是软件工程和数据库设计的有力工具,综合E-R数据模型的特点如下:
          (1) 有丰富的语义表达能力,能充分反映现实世界,包括实体和实体间的联系,能满足用户对数据对象的处理要求。
          (2) 易于交流和理解,因为它不依赖于计算机系统和具体的DBMS,所以,它是DBA、系统开发人员和用户之间的桥梁。
          (3) 易于修改和扩充。
          (4) 易于向其他各种数据模型(层次,网状,关系模型)转换。
          (5) 实体、属性和联系这三个概念是有明确区分的,但对于某个具体的数据对象,究竟是作为实体,还是作为属性或联系,

                  则是相对的。这取决于应用背景和用户的观点。

     

    二、数据模型(数据世界)

    在用计算机处理信息世界的信息时,必须抽取局部范围的主要特征,模拟和抽象出一个能反映信息世界中实体和实体之间联系的模型,即数据模型。也就是说,数据模型是抽象描述信息世界的一种工具和方法,是概念模型在数据世界中的表示形式。

    数据模型的三要素:模型结构、数据操作、完整性规则。

    数据模型模型结构分为:层次模型、网状模型、关系模型、面向对象模型。

     

    (一)层次模型

    在现实世界中,许多实体集之间的联系就是一个自然的层次关系。例如,行政机构、家族关系等都是层次关系。下图就是学校中系的层次模型。

    层次模型是最早用于商品数据库管理系统的数据模型。其典型代表是于1969问世、由IBM公司开发的数据库管理系统

    IMS(Information Management System)。

    (1) 层次模型的定义:用树形结构表示实体之间联系的模型叫层次模型。

    (2)层次模型的表示方法:树的结点表示记录(实体),每个记录可包含若干个字段(实体的属性),结点之间的连线表示相连两记录(实体)之间的关系,这种关系只能是“1-M”的。通常把表示1的实体集放在上方,称为父结点,表示M的实体集放在下方,称为子结点。

    (3)层次模型的特点:①有且仅有一个根结点。②根结点以外的其它结点有且仅有一个父结点。

    在层次模型中,记录的组织不再是一张杂乱无章的图,而是一棵树。例如,系记录型有:计算机系、电信系等记录值。而计算机系的下层记录值有软件、结构、应用等研究室和数据结构、操作系统、数据库等课程,软件研究室下层又有员工和项目记录值,如下图所示:

    根据层次模型的特点可知,层次模型只能表示“1-M”关系,而不能直接表示“M-M”关系。因此对于层次模型中实体集之间多对多的联系的处理,解决的方法是引入冗余结点。例如,学生和课程之间的多对多的联系,引入学生和课程的冗余结点,即转换为两棵树:一棵树的根是学生,子结点是课程,它表现了一个学生可以选多门课程;一棵树的根是课程,子结点是学生,它反映了一门课程可以被多个学生选。至于冗余结点可以用虚拟结点实现:在冗余结点处仅存放一个指针,指向实际结点。

     

    (4)层次模型的优点

    ① 层次数据库模型比较简单。

    ② 层次模型对具有一对多的层次关系(例如部门和职员的关系)的描述非常自然、直观,容易理解。

    ③ 层次数据库模型提供了良好的完整性支持。

     

    (5)层次模型的缺点

    ① 在现实世界中有很多的非层次性的联系,如多对多的联系,一个结点具有多个父结点等,层次模型表示这类联系的方法

    很笨拙。

    ② 难以实现系统扩充,对于插入和删除操作时,限制比较多,涉及到大量链接指针的调整。

    ③ 查询子结点必须经过父结点。

    ④ 由于结构严密,层次命令趋于程序化。

     

    (二)网状模型

    在现实世界中,事物之间的联系更多的是非层次关系的,用层次模型表示非树型结构是很不直接的,网状模型则可以克服这一弊病。层次模型中的记录只能组织成树的集合而不能是任意图的集合,而网状模型则可以。

    (1) 网状模型的定义:用网状结构表示实体之间联系的模型叫网状模型。

    (2) 网状模型的表示方法:网的结点表示记录(实体),每个记录可包含若干个字段(实体的属性),结点之间的连线表示相连两记录(实体)之间的关系,这种关系可以是“1-M”的,也可以是“M-M”的。

    (3) 网状模型的特点:①允许一个以上的结点无父亲结点。②一个结点可以有多于一个的父亲结点。

    网状模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,允许多个结点没有父亲结点,允许结点有多个父亲结点,此外它还允许两个结点之间有多种联系。因此网状模型可以更直接地去描述现实世界,而层次模型实际上是网状模型的一个特例。网状模型示例如下:

     

    (4) 网状数据模型的优点

    ①能够更为直接地描述现实世界,如一个结点可以有多个父亲节点。

    ②具有良好的性能,存取效率较高。

     

    (5) 网状数据模型的缺点

    ①结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握。

    ②难以实现系统扩充,对于插入和删除操作时,限制比较多,涉及到大量链接指针的调整。

    ③其DDL,DML语言复杂,用户不容易使用。由于记录之间联系是通过存取路径实现的,应用程序在访问数据时必须选择

    适当的存取路径,因此,用户必须了解系统结构的细节,加重了编写应用程序的负担。

     

    (三)关系模型

     

    (1) 关系模型的定义:用二维表格数据来表示实体及实体之间联系的模型叫关系模型。

    (2) 关系模型的特点:

    ① 每个表有多个列,每一列中的字段(属性)唯一且是类型相同的数据;

    ② 列的顺序可以是任意的;

    ③ 行的顺序可以是任意的;

    ④ 表中的字段(属性)是不可再分割的最小数据项,即表中不允许有子表;

    ⑤ 表中的任意两行不能完全相同。

    在关系模型中,无论是从客观事物中抽象出的实体,还是实体之间的联系,都用单一的结构类型—关系(表)来表示。在对关系进行各种处理之后,得到的还是关系—一张新的二维表。如图所示:

    关系数据库采用关系模型作为数据的组织方式。关系数据库因其严格的数学理论、使用简单灵活、数据独立性强等特点,而被公认为最有前途的一种数据库管理系统。它的发展十分迅速,目前已成为占据主导地位的数据库管理系统。自20世纪80

    年代以来,作为商品推出的数据库管理系统几乎都是关系型的,例如,Oracle,Sybase,Informix,Visual FoxPro,Mysql,Sqlserver等。

     

    (3) 关系模型的设计范式

    只有满足一定条件的关系模式,才能避免操作(例如插入、删除、修改)异常和数据异常(例如数据冗余),关系模式要满足的条件称为规范化形式,简称范式。 

     

    ① 第一范式(1NF)

    第一范式是对表属性的原子性约束,要求属性具有原子性,不可再分解成其它属性;其目的是消除重复字段(列)。

     

    ②  第二范式(2NF)

    第二范式是对表记录的惟一性约束,要求记录有惟一标识,能唯一地区分其它记录;其目的是消除重复记录(行)。

     

    ③ 第三范式(3NF)

    第三范式是对表字段冗余性的约束,要求字段没有冗余,任何字段都不能由其他字段派生出来;其目的是消除字段冗余。

     

    ④  第四范式(4NF)

    第四范式是对表记录冗余性的约束,要求记录没有冗余,同一表不存在一对多或多对多关系;其目的是消除记录冗余。

     

    ⑤  第五范式(5NF)

    第五范式是将表分割成尽可能小的块,目的是消除表中所有的冗余。

     

    在设计关系数据库表的时候,你应该总是要遵循这五大范式。

     

     

    展开全文
  • 数据库——关系模型设计

    千次阅读 2019-10-04 21:48:33
    数据库关系模型设计 背景 目前公司内部主流数据库是关系型数据库MySQL,数据库设计是对数据进行组织化和结构化的过程,即关系模型的设计。 对于项目规模小、用户数量少的情况,处理数据库中的表结构相对轻松;目前...

    数据库关系模型设计

    背景

    目前公司内部主流数据库是关系型数据库MySQL,数据库设计是对数据进行组织化和结构化的过程,即关系模型的设计。
    对于项目规模小、用户数量少的情况,处理数据库中的表结构相对轻松;目前公司的发展速度快、用户数量多、项目规模大、业务逻辑极其复杂;
    相应的数据库架构、关系模型表结构越来越复杂,这时我们往往会发现我们写出来的SQL语句是很笨拙并且效率低下的。更可怕的是,由于表结构定义不合理,会导致对数据的增删改查不方便不高效;最致命的是,扩展性极差,不能应对业务的变化。

    此时对我们开发人员关系模式设计能力要求提高了,我们要学习和掌握数据库的规范化流程,以指导我们更好的设计数据库的表结构,减少冗余的数据,借此可以提高数据库的存储效率,数据完整性和可扩展性。

    简洁、结构明晰的表结构对数据库的设计是相当重要的。规范化的表结构设计,在以后的数据维护中,不会发生插入(insert)、删除(delete)和更新(update)时的异常。反之,数据库表结构设计不合理,不仅会给数据库的使用和维护带来各种各样的问题,而且可能存储了大量不需要的冗余信息,浪费系统资源。

    关于数据库关系模型设计的问题,就是在实际项目中,我们应该构造几个关系模型,每个关系(表)由哪些属性(列)组成,不同关系之间有什么关联。

    规范化

    一个低级范式的关系模型通过模式分解可以转为若干个高一级别范式的关系模型的集合,这个过程就叫规范化。

    为了说明方便,我们用一个订单场景,来一步一步分析规范化的过程

    如下只是为了演示,关系模型规范化的过程,存在不规范的地方

    create table order_info (
        order_no varchar(10) not null comment '订单编号',
        account_name varchar(10) not null comment '会员姓名',
        account_address varchar(10) not null comment '会员地址',
        product_name varchar(10) not null comment '商品',
        product_address varchar(10) not null comment '产地',
        product_num int unsigned not null default 0 comment '数量',
        product_price double not null comment '单价',
        sum_price double not null comment '总价',
        primary key(order_no,account_name,product_name)
    ) engine=innodb default character set=utf8;
    
    order_noaccount_nameaccount_addressproduct_nameproduct_addressproduct_numproduct_pricesum_price
    201907080001小明北京bose降噪耳机美国120002000
    201907080001小明北京华为p20中国110001000
    201907080002小刚上海bose降噪耳机美国120002000
    201907080003小明北京iphone X美国120002000
    201907080004小丽唐山华为p20中国110001000

    这张表一共有8个字段,分析每个字段都有重复的值出现,也就是说,存在数据冗余问题。这将潜在地造成数据操作(比如删除、更新等操作)时的异常情况,因此,需要进行规范化。

    第一范式

    参照范式的定义,我们发现,这张表已经满足了第一范式的要求。

    事实上在当前所有的关系数据库管理系统(DBMS)中,都已经在建表的时候强制满足第一范式,即关系型数据库原生满足第一范式,1NF是所有关系型数据库的最基本要求。
    从业务的角度分析可能认为这张表不满足第一方式,因为地址可以再细化。

    缺点

    1. 数据冗余:每一个字段都有值重复
    2. 更新复杂:更新用户或商品的地址时需要更新多条记录,即数据的一致性增加了成本

    第二范式

    参照范式的定义,我们发现,这张表不满足第二范式的要求。

    • 存在依赖部分主键
      • (order_no,account_name,product_name) -> account_address
        • (account_name) -> account_address
      • (order_no,account_name,product_name) -> product_price
        • (product_name) -> product_price

    我们按照范式对该关系模式进行分解转化:

    account_info(用户表)

    create table account_info(
        id int unsigned auto_increment comment '主键',
        account_name varchar(10) comment '用户姓名',
        account_address varchar(10) comment '地址',
        primary key(id)
    )engine=innodb default charset=utf8
    idaccount_nameaccount_address
    1小明北京
    2小刚上海
    3小丽唐山

    product_info(商品表)

    create table product_info(
        id int unsigned auto_increment comment '主键',
        product_name varchar(10) comment '商品名称',
        product_address varchar(10) comment '产址',
        product_price double comment '单价',
        primary key(id)
    )engine=innodb default charset=utf8
    idproduct_nameproduct_addressproduct_price
    1bose降噪耳机美国2000
    2华为p20中国1000
    3iphone X美国2000

    order_info(订单表)

    create table order_info(
        id int unsigned auto_increment comment '主键',
        order_no varchar(10) comment '订单号',
        account_id int comment '用户id',
        primary key(id)
    )engine=innodb default charset=utf8
    idorder_noaccount_id
    12019070800011
    22019070800022
    32019070800033
    42019070800041

    order_detial_info(订单商品表)

    create table order_detial_info(
        id int unsigned auto_increment comment '主键',
        order_id int comment '订单id',
        product_id int comment '商品id',
        product_num int comment '商品数量',
        sum_price double comment '商品合计',
        primary key(id)
    )engine=innodb default charset=utf8
    idorder_idproduct_idproduct_numsum_price
    11112000
    21211000
    32112000
    43112000
    54311000

    从第一范式到第二范式,一个订单关系表衍生了多个关系表。

    第三范式

    参照范式的定义,我们发现,存在传递依赖
    order_detial_info

    • id -> product_id
    • id -> product_num
    • id -> sum_price
    • (product_id,product_num) -> sum_price

    order_info(订单表)

    create table order_info(
        id int unsigned auto_increment comment '主键',
        order_no varchar(10) comment '订单号',
        account_id int comment '用户id',
        sum_price double comment '商品合计',
        primary key(id)
    )engine=innodb default charset=utf8
    idorder_noaccount_idsum_price
    120190708000113000
    220190708000222000
    320190708000332000
    420190708000411000

    order_detial_info(订单商品表)

    create table order_detial_info(
        id int unsigned auto_increment comment '主键',
        order_id int comment '订单id',
        product_id int comment '商品id',
        product_num int comment '商品数量',
        primary key(id)
    )engine=innodb default charset=utf8
    idorder_idproduct_idproduct_num
    1111
    2121
    3211
    4311
    5431

    我们通过进一步转换,消除传递依赖,使之满足第三范式。

    总结

    在本文描述的过程中,我们通过结合实例的方法,通俗地演绎了数据表规范化的过程,并展示了在此过程中数据冗余、数据库操作异常等问题是如何得到解决的,但对于订单信息的汇总,报表的形成增加了难度。

    规范化的过程就是,一步步提升关系范式级别的过程;三大范式只是一般设计数据库的基本理念,可是实际工作中我们根据业务场景(OLAP/OLTP)出于性能或扩展的考虑,出发点不一样,在空间和时间上做的取舍不一样,关系模型设计只满足2NF或1NF,也就是反范式;但作为开发人员一定要了解关系模式设计规范化的过程。

    范式

    • 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF(列不可再分,无重复的列);
    • 第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足- 第二范式,简记为2NF(属性依赖完全主键(主键/所有复合主键),不能依赖主键的一部分,消除部分依赖);
    • 第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF(属性不依赖于其他非主属性,消除传递依赖);
    • 数据库范式除了上述三个范式还有BCNF、4NF等,这里不再一一讲解

    知识拓展

    第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。

    候选码:若关系(表)中某一属性(列)组的值能唯一标识一个元组(行),而其子集不能,则称该属性组为候选码(一个关系中可能存在多个候选码,则选定其中一个作为主码(主键 primary key))。

    候选码的各个属性成为主属性。不包含在任何候选码中的属性成为非主属性非码属性

    最简单的情况下,候选码只包含一个属性;在最极端情况下,关系模式中的所有属性是这个关系模型的属性码,成为全码

    转载于:https://www.cnblogs.com/sunjingwu/p/11213545.html

    展开全文
  • 关系型模型与非关系模型的区别 ** 数据模型 数据模分为两类 : 1.概念模型:也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。 2.逻辑模型和物理模型 逻辑模型 物理模型 层次模型、...
  • 数据库关系模型的三类完整性约束

    千次阅读 2019-02-25 10:12:10
    关系模型中有三类完整性约束,分别是:实体完整性,参照完整性,用户定义完整性 实体完整性 定义:实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。 它的意思就是说数据表中每一行都应该有办法...
  • 数据库关系模型

    千次阅读 2019-04-17 14:46:06
    关系模型的数据结构:以二维表的形式表示实体和实体之间联系的数据模型。其是一张规范化的二维表,它由表名,表头和表体三部分构成。 2.关系模型:分量:每一行对应的列的属性值,即为元组中的一个属性值。 候选码:...
  • “成功的路上并不挤,只是你淘汰了你自己”,你好,我是梦阳辰,未来我陪你一起成长。...数据操作:对数据库的查询与更新。 完整性约束:对数据施加规则和限制。 数据模型的类型: 1)概念模型 概念模型是对真实.
  • 掌握概念模型(ER模型和UML模型)到关系模型的转化。 对于ER模型和UML模型不是很熟悉的小伙伴和烦恼于如何设计项目的数据库的小伙伴可以看看本文。 数据库设计(DBD):构造最优的数据模型,建立数据库及其应用系统...
  • 数据库关系模型基本介绍

    万次阅读 2018-04-24 18:13:57
    关系模型研究什么?关系模型就是处理Table的,它由三个部分组成:1:描述DB各种数据的基本结构形式2:描述Table与Table之间所可能发生的各种操作(关系运算)3:描述这些操作所应遵循的约束条件(完整性约束)就是要...
  • 层次数据模型     定义:层次数据模型是用树状<层次>结构来组织数据的数据模型。     满足下面两个条件的基本层次联系的集合为层次模型     1. 有且只有一个结点没有双亲结点,这个结点称为根结点...
  • 数据库实体联系模型与关系模型

    千次阅读 2020-03-02 19:11:33
    数据库设计是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。...因此,规划数据构成及数据间关系,并应用某一具体的数据库管理系统如MySQL构建数据库的过程就是...
  • 数据库MySQL关系模型之基本概念

    万次阅读 2019-01-31 16:11:44
    1.什么是关系模型 1.1关系模型研究什么 一个关系(relation)就是一个Table 关系模型就是处理Table的,它由三个部分组成: 描述DB各种数据的基本结构形式(Table/Relation) 描述Table与Table之间所有可能发生的...
  • 关系模型就是用二维表描述数据本身,以及数据之间的关系。 关系模型的组成: 数据结构(表结构)+关系操作(八个操作)+完整性约束(三个完整性) 实体完整性 在关系表中,所有元组主码的值都不能为空。 参照...
  • 文章目录关系的特性数学定义的关系关系的特性关系不可重复候选码/候选键一个关系中可以有多个候选码/候选键主码/主键主属性与非主属性外码/外键总结:什么是关系 关系的特性 列的同质性,每一列的分量来自与同一个...
  • 关系型数据库系统的关系模型、关系、元组、属性、关系实例概念说明
  • (1)关系模型的三个基本概念 关系模型的三个要素: 1)基本结构: 关系/table2 2)基本操作: 关系操作 3)完整性约束: 实体完整性(关系中的主码中的属性值不能为空(对主码而言)) 参照完整性(如果关系...
  • ER图和关系模型到MySQL数据库

    千次阅读 2020-03-02 21:01:12
    本篇主要介绍了MySQL数据库表从ER图到关系模型,再到数据库表的创建过程及其表结构的修改。通过本篇的学习,可以掌握以下内容: ● 应用ER图和关系模型创建数据库表 ● 数据库表结构的修改 1、mooc数据库表的ER...
  • 关系数据库模型关系数据库设计.ppt
  • 参照完整性要求关系中不允许引用不存在的实体。设定相应的更新删除插入规则来更新参考表。 例如表sutdent(有id,username,password),表sutdent_info(有id,name,age,sex)。其中表sutdent_info参照了表...
  • 数据库关系图导出到sql文件 数据库模型图导出到sql文件 原创文档,亲测可用。
  • 数据库技术中,用数据模型的概念描述数据库的结构和语义,是对现实世界的数据抽象。数据模型是研究数据库技术的核心和基础。 文章目录1.概念数据模型(CDM)2.逻辑数据模型(LDM)3.物理数据模型(PDM) 1.概念...
  • 所谓关系模型就是“一对一、一对多、多对多”等关系模型关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。 关系型数据可以很好地存储一些关系模型的数据,比如...
  • 数据库关系模式题型大全

    千次阅读 2016-07-09 09:34:01
    关系模式 (1) 求等价极小函数依赖集F ’(2) 判断关系模式的规范化程度(3) 模式分解(4) 求候选键(5) 判断p是否具有无损连接性
  • 数据库系统:数据库+数据库管理系统+应用程序+数据库管理员(大佬) 实体:客观存在的对象,比如一个学生,一位老师 属性:实体的特性,比如学生的学号、姓名、院系 码:可唯一标识实体的属性集。比如学号是学生的码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 397,861
精华内容 159,144
关键字:

数据库关系模型