精华内容
下载资源
问答
  • 在关系数据库设计中设计关系模式是
    千次阅读
    2021-10-21 20:59:31

    关系数据库模式

    1.定义相关项1

    在数据库中要区分型和值。关系数据库中的型也称为关系数据库模式,是关系数据库结构中的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。
    实际上,

    • 关系的概念对应于程序设计语言中变量的概念
    • 关系模式对应的于程序设计语言中类型的定义的概念

    关系数据库的值是这些关系模式在某一个时刻而对应的关系的集合,通常称之为关系数据库。

    定义:关系的描述称为关系模式(Relation Schema),可以形式化地表示为:

    R ( U , D , d o m , F ) R (U , D , dom,F) R(U,D,dom,F)
    其中,R表示关系名;U是组成该关系的属性名集合;D是属性的域;dom是属性向域的影像集合;F为属性间数据的依赖关系集合。
    通常将关系模式简记为:
    R ( U ) 或 R ( A 1 , A 2 , A 3 , … , A n ) R(U)或R(A_1,A_2,A_3,\dots,A_n) R(U)R(A1,A2,A3,,An)
    其中,R为关系名,A1,A2,A3,…,An为属性名或域名,属性向域的映像常常直接说明属性的类型、长度。
    通常在关系模式主属性上加下划线标识该属性为主码属性。

    2.关系运算

    集合运算符、专门的关系运算符、算数比较符和逻辑运算符。
    根据运算符的不同,关系代数运算可分为传统的集合运算和专门的关系运算。传统的集合运算是从关系的水平方向进行的,包括并、交、差以及广义笛卡尔积。专门的运算关系既可以从关系的水平方向进行运算,又可以向关系的垂直方向运算,包括选择、投影、连接以及除法。
    并、差、笛卡尔积、投影、选择是5中基本的运算,因为其他运算可以通过基本的运算导出。

    运算符含义
    集合运算符 ∪ 并 \cup 并 − 差 -差 ∩ 交 \cap交 × 笛 卡 尔 积 \times 笛卡尔积 ×
    专门的关系运算符 σ 选 择 \sigma选择 σ π 投 影 \pi投影 π ⋈ 连 接 \bowtie连接 ÷ 除 \div除 ÷
    比较运算符
    逻辑运算符 ¬ 非 \neg非 ¬ ∨ 与 \vee与 ∧ 或 \wedge或

    3.函数依赖

    数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。函数依赖则是一种最重要、最基本的数据依赖。

    1. 函数依赖。设R(U)是属性集U上的关系模式,X、Y是U的子集。若R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作 X → Y X \rightarrow Y XY
    2. 非平凡的函数依赖。如果 X → Y X \rightarrow Y XY,但 Y ∉ X Y \not\in X YX,则称 X → Y X \rightarrow Y XY是非平凡依赖
    3. 平凡依赖的函数依赖。如果 X → Y X \rightarrow Y XY,但 Y ⊆ X Y \subseteq X YX,则称 X → Y X \rightarrow Y XY是平凡的函数依赖。
    4. 完全函数依赖。在R(U)中,如果 X → Y X \rightarrow Y XY,并且对于X的任何一个真子集 X ′ X' X都有 X ′ X' X不能决定Y,则称Y对X完全函数依赖。记作: X → f Y X \xrightarrow{f} Y Xf Y。 例子:给定一个学生选课关系SC(Sno,Cno,G),可以得到 F = { ( S n o , C n o ) → G } F = \{(Sno,Cno) \rightarrow G\} F={(Sno,Cno)G},对(Sno,Gno)中的任何一个真子集Sno或Gno都不能决定G,所以G完全依赖于Sno,Gno。
    5. 部分函数依赖。如果 X → Y X \rightarrow Y XY,但Y不完全幻术依赖于X,则称Y对X部分函数依赖,记作 X → p Y X \xrightarrow{p} Y Xp Y。部分函数依赖也称为局部函数依赖。
    6. 传递依赖。在R(U,F)中,如果 X → Y , Y ∉ X , Y → Z X\rightarrow Y,Y \not\in X,Y \rightarrow Z XY,YX,YZ,则称Z对X传递依赖
    7. 码。设K为R(U,F)中的属性的组合,若 K → U K \rightarrow U KU,且对于K的任何一个真子集 K ′ K' K都有 K ′ K' K不能决定U,这K为R的候选码。若有多个候选码,则选一个作为主码。候选码通常也称为候选关键字。
    8. 主属性和非主属性。包含在任何一个候选码中的属性称为主属性,否则称为非主属性。
    9. 外码。若R(U)中的属性或属性组X非R的码,但X是另一个关系的码,则称为X的外码。
    10. 函数依赖的功力系统

    试题

    题一

    2019年下半年53题
    给定关系R(U,Fr),其中属性集U={A,B,C,D},函数依赖集 F r = { A → B C , B → D } Fr = \{A \rightarrow BC , B \rightarrow D\} Fr={ABC,BD};关系S(U,Fs),其中属性集 U = { A , C , E } U=\{A,C,E\} U={A,C,E} ,函数依赖集 F s = { A → C , C → E } Fs = \{A \rightarrow C , C \rightarrow E\} Fs={AC,CE}。R和S的主键分为___1___关于Fr和Fs的叙述,正确的是___2___
    (1)
      A. A和A
     B. AB和A
     C. A和AC
     D. AB和AC
    (2)
     A. Fr蕴含 A->B,A->C,但Fr不存在传递依赖
     B. Fs蕴含A->E,Fs存在传递依赖,但Fr不存在传递依赖
     C. Fr,Fs分别蕴含A->D,A->E,故Fr,Fs都存在传递依赖
     D. Fr蕴含A->D,Fr存在传递依赖,但是Fs不存在传递依赖
    解:A、C
     1题:关系R与S中的属性A可以推出两个关系式其他全部属性,所以主键都是A
     2题:
      R中,A->BC等价与A->B并且A->C,又B->D所以A->D,存在传递依赖
    S中,A->C,C->E所以A->E,存在传递依赖


    1. 本节内容取自《软件设计师教程 第5版》 ↩︎

    更多相关内容
  • 关系数据库模型设计

    千次阅读 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)

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

     

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

     

     

    展开全文
  • 关系数据库设计核心

    千次阅读 2020-04-10 16:32:32
    1、设计一个合适的关系数据库系统的关键是关系数据库模式的设计,即应构造几个关系模式, 每个模式有哪些属性,怎样将这些相互关联的关系模式组建成一个适合的关系模型,关系数据库 的设计必须在关系数据库设计理论...

    一、关系数据库设计理论

    1、设计一个合适的关系数据库系统的关键是关系数据库模式的设计,即应构造几个关系模式, 每个模式有哪些属性,怎样将这些相互关联的关系模式组建成一个适合的关系模型,关系数据库 的设计必须在关系数据库设计理论的指导下进行。
    2、关系数据库设计理论有三个方面的内容:函数依赖、范式和模式设计。函数依赖起核心作用, 它是模式分解和模式设计的基础,范式是模式分解的标准。

    【例1】设计一个学生课程数据库,其关系模式SDSC(Sno, Sname, Age, Dept,DeptHead, Cno,Grade),各属性含义为学号、姓名、年龄、系、系主任姓名;课程号、成绩。根据实际情况, 这些属性语义规定为:
    (1)一个系有若干学生,一个学生只属于一个系。
    (2)一个系只有一个系主任。
    (3)一个学生可以选修多门课程,一门课程可被多个学生选修。 (4)每个学生学习每门课程有一个成绩
    在这里插入图片描述
    从上述语义规定和分析表中数据可以看出,(Sno, Cno)能唯一标识一个元组,所以,(Sno, Cno)为该关系模式的主码,但在进行数据库操作时,会出现以下问题。
    (1)数据冗余(2)插入异常(3)删除异常(4)修改异常

    由于存在上述问题,SDSC不是一个好的关系模式。为了克服这些异常,将S关系分解为学生关系S (Sno, Sname, Age, Dept),系关系D(Dept,DeptHead),选课关系SC(Sno, Cno,Grade),这三个关系模式的实例如表2、表3、表4所示。
    在这里插入图片描述
    在这里插入图片描述

    二、规范化

    规范化的基本思想是尽量减小数据冗余,消除数据依赖中不合适的部分,解决插入异常、删除异常和更新异常等问题,这就要求设计出的关系模式要满足一定条件。在关系数据库的规范化过程中,为不同程度的规范化要求设立的不同标准或准则称为范式。满足最低要求的称为第一范式,简称1NF,在第一范式基础上满足进一步要求的成为第二范式2NF,以此类推。
    1971年至1972年,E.F.Codd系统地提出了1NF、2NF、3NF的概念,讨论了关系模式的规
    范化问题。 1974年,Codd。和Boyce又共同提出了一个新范式,即BCNF。1976年有人提出了4NF,后又有人提出了5NF
    各个范式之间的集合关系可以表示为:
    5NF4NFBCNF3NF2NF1NF
    如下图所示:
    在这里插入图片描述
    在这里插入图片描述

    1、第一范式(1NF)

    所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域

    说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。

    在这里插入图片描述

    2、第二范式(2NF)

    在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

    第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。

    例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加是在ER设计时添加,不是建库时随意添加)

    第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。
    在这里插入图片描述

    3、第三范式(3NF)

    在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
    第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式
    (2NF)。
    数据库范式而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。

    例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

    在这里插入图片描述

    4、巴斯-科德范式(BCNF)

    Boyce-Codd Normal Form(巴斯-科德范式),在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)
    巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF) 必须满足第三范式(3NF)。通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是 对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因。某些书上, 根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方。而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求。

    【目的原则】

    规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小。便于插入、删除和更新。遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。
    一个关系模式接着分解可以得到不同关系模式集合,也就是说分解方法不是惟一的。最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空问,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。实际上,并不一定要求全部模式都达到BCNF不可。有时故意保留部分冗余可能更方便数据查询。尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。

    【反范式(了解)】

    规范化的优点是明显的,它避免了大量的数据冗余,节省了存储空间,保持了数据的一致性。当一个库里的数据经常发生变化时,达到3NF的库可以使用户不必在超过两个以上的地方更改同 一个值。那么是不是只要把所有的表都规范为3NF后,数据库的设计就是最优的呢?这可不一定。范式越高意味着表的划分更细,一个数据库中需要的表也就越多,用户不得不将原本相关联的数据分摊到多个表中。当用户同时需要这些数据时只能采用连接表的形式将数据重新合并在一起。同时把多个表联接在一起的花费是巨大的,尤其是当需要连接的两张或者多张表数据非常庞大的时候,表连接操作几乎是一个噩梦,这严重地降低了系统运行性能。

    展开全文
  • 社交系统用户好友关系数据库设计

    万次阅读 多人点赞 2018-09-17 10:19:33
    社交类系统,用户与用户的好友关系设计必不可少,那么如何设计好友的数据库至关重要,本篇文章带大家学习一下相关的设计方案。 基础分析 第一步,有一张用户表,表内包含用户的基本信息,比如账号、姓名...

    在社交类系统中,用户与用户的好友关系的设计必不可少,那么如何设计好友的数据库至关重要,本篇文章带大家学习一下相关的设计方案。

    基础分析

    第一步,有一张用户表,表内包含用户的基本信息,比如账号、姓名、性别等信息。这里用tb_user表示用户信息表。

    ID用户名
    1张三
    2李四
    3王五
    4赵六

    第二步,需要将用户与用户直接建立好友关系。这里有两种情况:单向好友关系、互为好友关系。
    - 单向好友关系就是张三在李四的好友列表中,但李四没有在张三的好友列表中;
    - 互为好友关系,如果张三和李四为好友,则双方都在彼此的好友列表中;

    好友关系设计

    无论上面两种关系的哪一种,好友关系表都可以使用下面的设计,表tb_friend:

    IDuser_idfriend_id
    112
    213

    示例中,张三拥有李四和王五两个好友。

    单向好友模式

    如果是单向好友模式,那么两个人互为好友关系则插入的数据应该是这样:

    IDuser_idfriend_id
    112
    221

    也就是张三是李四的好友,李四也是张三的好友。此时使用sql语句查询时只用限定user_id作为条件即可查询出用户的好友列表:

    select * from tb_friend where user_id = 1

    互为好友关系

    因为是互为好友关系,则只需要插入一条数据即可。对应的查询语句为:

    select * from tb_friend where user_id = 1 or friend_id = 1
    

    当然也可以使用UNION ALL来实现:

    select friend_id as friends from tb_friend  where user_id = 1
    UNION ALL --使用UNION ALL,因为不存在重复的
    select user_id as friends from tb_friend where friend_id = 1

    注意事项:
    - user_id1–>friend_id2和user_id2–>friend_id1是相同的记录,不需要重复插入;
    - 为了快速判断两个人是不是好友,可在程序层插入数据前添加一个限制user_id1 < user_id2;
    - 可加入缓存层(Redis或Memcached)来提高性能;
    - 可从数据库层限制(user_id,friend_id)不可重复;

    加入分组

    如果好友数量比较多,关系比较复杂,可引入好友分组,可进行如下改造:

    IDuser_idfriend_iduser_groupfriend_group
    112好友同学
    213同学同学

    在数据库中添加了user_group,当前user给friend设置的分组,friend_group是当前user的朋友对其设置的分组类别。

    于是,查询好友列表的SQL如下:

    select friend_id as friends ,user_group as my_group from tb_friends where user_id = 1
    
    UNION ALL
    
    select user_id as friends , friend_group as my_group from friend_id = 1

    小结

    至此社交系统中好友关系的设计及SQL语句使用基本完成。可根据具体的业务情况进行修改。在查询除好友的id列表之后就可以进行好友信息的查询。此处需要注意的是如果用in语句来查询会有不走索引、sql语句大小限制、性能等问题,可考虑使用左连接进行查询。

    原文链接:https://www.choupangxia.com/topic/detail/74

    关注微信公众

    更多技术、架构、管理等知识分享,请关注微信公众号:程序新视界(ID:ershixiong_see_world)
    程序新视界

    展开全文
  • 层次关系数据库表的设计

    千次阅读 2021-01-28 19:52:15
    数据层次是表达数据的一种重要关系在数据库设计中,如:组织结构分解、工作任务分解、行政区划的分解等都是层次关系数据的典型实例。表达层次关系的数据一般需要实现如下属性:1.层次的最大级联层次数。如:中国...
  • 数据库分析与设计:ER与关系模式

    千次阅读 多人点赞 2020-04-20 10:18:53
    设要为某工厂设计一个数据库,需要记录如下信息(有下划线的信息可作为唯一标识): •产品有产品名、规格; •每种产品拥有多道加工工序,每道加工工序只适用于一种产品; •每道工序需要记录相关的工序编号、所需...
  • 数据库设计(一)——数据库设计

    千次阅读 2022-02-25 23:42:46
    一、数据库设计简介 按照规范设计,将数据库 的设计过程分为六个阶段: A、系统 需求分析阶段 B、概念结构设计阶段 C、逻辑结构设计阶段 D、物理结构设计阶段 E、数据库实施阶段 F、数据库运行与维护阶段 需求分析...
  • 第八章 关系数据库设计 8.1 好的关系设计的特点 数据库逻辑设计主要解决的问题: –关系数据库应该组织成几个关系模式 –关系模式中有包括哪些属性 从不良的设计模式到良好的设计模式的过程 不良的设计...
  • 数据库设计

    万次阅读 2021-09-14 09:58:39
    数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构, 并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。...
  • 数据库系统-数据库设计

    千次阅读 2022-04-11 17:47:49
    数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。 数据库设计的特点 数据库设计是一项涉及多学科的综合性技术,又是一项...
  • 数据库设计-逻辑结构设计

    千次阅读 2022-04-30 20:48:29
    文章目录数据库设计-逻辑结构设计ER图转换成关系模式集的算法步骤1 实体类型的转换步骤2 联系类型的转换二元联系类型的转换(重点)一元联系类型的转换三元关系类型的转换采用ER模型的逻辑设计步骤 数据库设计-逻辑...
  • 数据库技术-数据库概念设计

    千次阅读 2021-07-19 11:26:37
    概念设计是数据库设计的核心环节。通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。 1、数据库概念设计的目标 定义和描述应用领域设计的数据范围 ①获取信息模型 ②描述数据的属性特征 ③...
  • 关系数据库中的关系指什么

    千次阅读 2021-07-31 17:07:11
    关系数据库 关系模型结构 1、单一的数据结构----关系(表文件)。关系数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组,它类似于Excel工作表。一个数据库可以包含任意多个数据表。 ...
  • 关系数据库设计理论

    千次阅读 2018-07-11 18:32:27
    关系数据库设计理论 设计一个好的关系数据库系统,关键是要设计一个好的数据库模式(数据库逻辑设计问题) 数据库逻辑设计主要解决的问题 关系数据库应该组织成几个关系模式 关系模式中包括哪些属性 ...
  • 数据库设计中关系规范化理论总结

    千次阅读 多人点赞 2020-07-31 11:08:14
    在关系数据库设计过程,最重要的莫过于对数据库的逻辑设计,即针对一个具体的问题,我们应该如何去构造一个适合它的数据库模式。经过科学家的讨论研究,最终形成我们今天所看到的关系数据库的规范化理论。本文...
  • 当时SQL server数据库准备考试了,我花了两个星期把整本书看了,这些是当时做的笔记(针对老师划得重点),现在学习Java做了几个项目后,发现有很多东西不是特别理解,特地再次复习一下,并且自己再思考思考,有兴趣...
  • 贝尔梅尔娜美2019.03.15采纳率:60%等级:39已帮助:91565人数据库系统的基本概念数据:实际上就是描述事物的符号记录。数据的特点:有一定的结构,有型与值之分,如...数据库存放数据是按数据所提供的数据模式存...
  • 数据库E-R图与关系模式

    千次阅读 2021-12-16 14:01:39
    如图,关系也可以有额外的属性,记录老师什么时候开始指导某学生 弱实体集 映射基数 就是描述这段关系是一对多还是多对一,多对多,一对一 如下图,advisor是二者的关系, 一个导师指导多个学生,所以是一对多的...
  • 数据库四种设计模式

    千次阅读 2018-08-01 09:25:41
    数据库设计四种主要设计模式的一般使用原则 1.主扩展模式 主扩展模式通常用来将几个相似的对象的共有属性抽取出来,形成一个”公共属性表“,且“公共属性表”与“专有属性表”是“一对一”的关系。  “专有属性...
  • DbSchema 是一款专业可靠的数据库关系设计软件,你可以通过拖放或按外键图标添加表格,并具有多种过滤器,数据排序机制等等。...【功能特点】1、ER图DBNAME图表设计DbSchema,您将通过图表布局与模式...
  • 数据库关系模式

    千次阅读 2019-11-08 19:28:42
    1.数据库关系模式中三级两映像结构知识点 ( 1)模式(基本表) 模式即逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个概念模式,即对应数据库设计的基本表...
  • 本文根据b站鲁老师的教学视频整理而来,可能会偏理论化,有点枯燥,但是如果认真看完,还是会有所收获哒。 从本文可以学习到: ...数据库设计(DBD):构造最优的数据模型,建立数据库及其应用系统的过程。...
  • 数据库关系代数详解

    万次阅读 多人点赞 2021-02-26 16:35:55
    学习关系代数的时候,我们脑海要时刻拥有一张表格,还有一些表格的参数,这张表格如下: 比如说我们每个人都见过成绩单,牢记以下的比喻 R就为整张成绩单 R[A1, A2, A3,…Ai] = R[语文,英语,数学……学科...
  • 数据库设计是我们项目的基石,一个大型项目,要有一个良好的数据库设计,才能走得更远。一个项目如果数据库设计的不好,后期开发不仅任务量大,而且伴随项目越来越大,项目的可维护性会越来越差。数据库设计对于...
  • 关系数据库与对象数据库

    千次阅读 2019-08-12 16:01:38
    关系数据库(英语:Relational database),是创建关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库的数据。现实世界的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由...
  • 数据库关系模式的范式总结

    千次阅读 多人点赞 2019-04-25 21:21:01
    目录 什么是关系模式的范式 第一范式(1NF) 第二范式(2NF) ...关系模式的范式是衡量关系模式好坏的标准。范式的种类与数据依赖有着直接联系,满足不同程度要求的关系称为不同的范式等级。其中,...
  • 关系数据库设计流程(全网最全---没有之一)

    万次阅读 多人点赞 2018-12-23 12:01:17
    关系数据库设计流程(全网最全---没有之一) 目录 关系数据库设计流程(全网最全---没有之一) 1、前言 2、关系数据库设计总体流程 3、关系数据库设计的局部流程 3.1 需求简介 3.2 需求描述 3.3 ...
  • 一、数据库设计流程 1、需求分析 确定用户对数据库系统的使用要求和各种约束条件,形成用户需求规约 ...其他设计基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性
  • 数据库系统】关系模式

    千次阅读 2020-04-08 11:48:27
    文章目录前言数据库模式和关系模式基本概念关系模式深入了解码合理设计关系模式 前言   关系模型是常用的数据模型,它主要包括三方面的内容,即: 数据结构:表 数据操作:DDL DML DCL(DBAs常用) 完整性约束:...
  • 数据库设计中的概念、逻辑、物理结构设计辨析

    千次阅读 多人点赞 2021-05-31 21:13:36
    数据库设计应该是概念结构设计(E-R图),逻辑结构设计(关系模式),物理结构设计(数据表,设计字段)三者共同组成的。 概念结构设计依据对于现实世界的关系的调研、了解、分析而后得到的实体对象有哪些,对象有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 382,279
精华内容 152,911
热门标签
关键字:

在关系数据库设计中设计关系模式是