《MySQL数据库技术》北京交通大学海滨学院计科系刘潇13623174925B教219主题2数据库设计相关知识2.1数据模型2.2数据库设计流程2.3关系数据库的规范化主题2数据库设计相关知识2.1数据模型2.2数据库设计流程2.3关系数据库的规范化主题2数据库设计相关知识现实世界信息世界机器世界概念数据模型逻辑数据模型物理数据模型建模建模建模客观世界建模结果转换转换数据模型模型:现实世界特征的模拟和抽象。数据模型:是现实世界数据特征的抽象。数据模型应满足两方面的要求:一是能比较真实地模拟现实世界,容易被人所理解(面向现实世界、面向用户);二是便于在计算机上实现(面向实现目的、面向计算机)。缘由概念模型主题2数据库设计相关知识概念模型用于信息世界的建模,是实现现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。概念模型主题2数据库设计相关知识A.信息世界中的基本概念实体(Entity):客观存在并可相互区别的事物称为实体。如:书籍和电脑。属性(Attribute):实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。如:书籍可以由书名、作者、页数、ISBN等属性来刻画。码(Key):唯一标识实体的属性集称为码。如:书籍的ISBN属性可以作为书籍的码。概念模型主题2数据库设计相关知识A.信息世界中的基本概念域(Domain):属性的取值范围称为该属性的域。如:书籍的页数属性取值应当为整数。实体型(EntityType):具有相同属性的实体必然具有共同的特征和性质。用实体名与属性名集合来抽象和刻画同类实体,称为实体型。如:书籍(书名,作者,页数,ISBN,出版社,出版日期,版次)实体集(EntitySet):同型实体的集合称为实体集。如:《数据库导论》课本的集合。概念模型主题2数据库设计相关知识A.信息世界中的基本概念联系(Relationship):实体(型)内部和实体(型)之间存在着联系。实体内部的联系通常是指组成实体的各属性之间的联系。实体之间的联系通常是指不同实体集之间的联系。两个实体型之间的联系通常可以分为以下三类:一对一联系(1:1)、一对多联系(1:N)和多对多联系(M:N)。概念模型主题2数据库设计相关知识A.信息世界中的基本概念一对一联系(1:1)如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。【举例】一个班中只有一个正班长,一个班长只在一个班中任职。概念模型主题2数据库设计相关知识A.信息世界中的基本概念一对多联系(1:N)如果对于实体集A中的每一个实体,实体集B中有n个(n≥0)实体与之联系,反之对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B具有一对多联系,记为1:n。【举例】一个班中有若干名学生,每个学生只在一个班级中学习。概念模型主题2数据库设计相关知识A.信息世界中的基本概念多对多联系(M:N)如果对于实体集A中的每一个实体,实体集B中有n个(n≥0)实体与之联系,反之对于实体集B中的每一个实体,实体集A中也有m个(m≥0)实体与之联系,则称实体集A与实体集B具有一对多联系,记为m:n。【举例】一门课程同时有若干名学生选修,一个学生可以同时选修多门课程。概念模型主题2数据库设计相关知识B.概念模型的表示方法常用的概念模型为“实体-联系”模型,也就是E-R方法(E-R图)。用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。联系,一般是动词用椭圆形表示,并用无向边将其与相应的实体链接起来。属性,一般是名词用矩形表示,矩形框内写明实体名。实体,一般是名词表示方法含义符号概念模型主题2数据库设计相关知识B.概念模型的表示方法a.两个实体型之间的联系实体型A实体型B联系名111:1联系实体型A实体型B联系名1n1:n联系实体型A实体型B联系名mnm:n联系概念模型主题2数据库设计相关知识B.概念模型的表示方法a.两个实体型之间的联系班级班长班级-班长111:1联系实例一个班中只有一个正班长。一个班长只在一个班中任职。概念模型主题2数据库设计相关知识B.概念模型的表示方法a.两个实体型之间的联系班级学生组成1n1:n联系实例一个班中有若干名学生。每个学生只在一个班级中学习。概念模型主题2数据库设计相关知识B.概念模型的表示方法a.两个实体型之间的联系课程学生选修mnm:n联系实例一门课程同时有若干名学生选修。一个学生可以同时选修多门课程。概念模型主题2数据库设计相关知识B.概念模型的表示方法b.两个以上实体型之间的联系实例一门课程有若干个教师讲授。使用若干本参考书。每一个教师只讲授一门课程。每一本参考书只供一门课程使用。课程教师讲授mn两个以上实体型之间1:n联系参考书1概念模型主题2数据库设计相关知识B.概念模型的表示方法b.两个以上实体型之间的联系实例一个供应商可以供给多个项目多种零件。每个项目可以使用多个供应商供应的零件。每种零件可由不同的供应商供给。供应商项目供应np两个以上实体型之间m:n联系零件m概念模型主题2数据库设计相关知识B.概念模型的表示方法c.单个实体型之间的联系实例职工实体型内部具有领导与被领导的联系。某一职工(干部)“领导”若干名职工。一个职工仅被另外一个职工直接领导。职工领导单个实体型内部1:n联系1n主题2数据库设计相关知识以某物流中心物资管理系统为例,用E-R图描述该系统的概念数据模型。该系统涉及的实体如下:供应商:属性有供应商编号、供应商名称、供应商地址、联系人、联系方式等。商品:属性有商品编号、商品名称、批号、价格等。库房:属性有仓库号、面积、位置、联系电话等。员工:属性有工号、姓名、性别、年龄、职称等。这些实体之间的联系有:一家供应商可以供应多种商品,而一种商品可以由多家供应商供应。一个仓库可以存放多种商品,而一种商品可以存放在多个仓库。一个仓库有多名员工,而一个员工只能在一个仓库工作。每个仓库由其中的一名员工担当主任职位,领导其他员工开展工作。主题2数据库设计相关知识供应商库房员工商品供应商编号供应商名称供应商地址联系人联系方式仓库号面积位置联系电话职称姓名工号性别年龄价格批号商品名称商品编号供应工作存放领导1n数量供应价1mmnmnE-R图实例逻辑模型主题2数据库设计相关知识常见的逻辑数据模型包括:层次模型、网状模型和关系模型。关系模型是目前数据库管理系统中实现最多的一类数据模型,它是用二维表结构来表示实体及实体间联系的模型,并以二维表格的形式组织数据库中的数据。逻辑模型主题2数据库设计相关知识A.层次模型层次模型表示数据间的从属关系结构,是一种以记录某一事物的类型为根节点的有向树结构。层次模型像一棵倒置的“树”,根节点在上,层次最高;子节点在下,逐层排列。仅有一个无双亲的节点,该节点称为根节点。除根节点以外的任何一个子节点,向上仅有一个父节点,向下可以有若干个子节点。层次模型表示的是从根节点到子节点的一个节点对多个节点,或从子节点到父节点的多个节点对一个节点。逻辑模型主题2数据库设计相关知识B.网状模型网状模型是层次模型的扩展,它表示多个从属关系的层次结构,呈现一种交叉关系的网络结构。有一个以上的节点无双亲。至少有一个节点有多个双亲。网状模型可以表示较复杂的数据结构,即可以表示数据间的纵向关系与横向关系。逻辑模型主题2数据库设计相关知识C.关系模型在关系模型中,不同数据之间的联系用关系来表示,其实质是将数据的逻辑结构归为满足一定条件的二维表形式,每个二维表称为一个关系。在二维表中,每一行称为一个记录每一列称为一个字段,整个表表示一个关系。逻辑模型主题2数据库设计相关知识C.关系模型工号姓名职称课程号0100刘洋助教02120101张彩讲师02130102李儒副教授02140103冯强教授0214关系中每一列具有相同的属性,每个属性被指定一个不同的属性名(也叫字段名),属性名不能重复,列数根据需要而设置。关系中的每一个数据必须是不可再分的数据项,而不是组合的数据项。关系中的每一个记录由一个个体事物的诸多属性构成。行和列的排列顺序是任意的。一个关系是一张二维表,不允许有相同的字段名,也不允许有相同的记录存在。逻辑模型主题2数据库设计相关知识C.关系模型关系一个关系逻辑上对应一张二维表(格)。可以为每个关系取一个名称进行标识。与之同义的术语是“表”。如:“教师信息表”就是一个关系。元组(记录)表中的一行即为一个元组。与之同义的术语是“行”。如:“(0100,刘洋,助教,0212)”就是一个元组。属性(字段)表中的一列即为一个属性,给每一个属性起一个名称即属性名。与之同义的术语是“列”。如:“职称”就是一个属性。逻辑模型主题2数据库设计相关知识C.关系模型主码(PRIMARYKEY)表中的一列或一组列,其值能够唯一区分表中的每个行。其中,由一组列构成的主码称为组合主码。与之同义的术语是“主键”。如:教师信息表中“工号”可以唯一区分一条记录,可以单独作为主码。外码(FOREIGNKEY)表中的一列或一组列,其包含另一张表的主键值,主要用于定义两个表之间的关系。与之同义的术语是“外键”。如:教师信息表中的“课程号”可作为另一张“课程表”的主键,用于同教师信息表关联,可作为教师信息表的外码。逻辑模型主题2数据库设计相关知识C.关系模型域属性的取值范围。与之同义的术语是“数据类型”。如:教师信息表中“工号”属性值要求由4位阿拉伯数字构成,数据类型为“文本型”。分量元组中的一个属性值。与之同义的术语是“列值”。如:张彩的“职称”属性值为“讲师”。关系模式对关系的描述,一般表示为“关系名(属性1,属性2,…,属性n)”。如:“教师(工号,姓名,职称,课程号)”。主题2数据库设计相关知识2.1数据模型2.2数据库设计流程2.3关系数据库的规范化主题2数据库设计相关知识按照数据库规范设计的方法,可将数据库设计分为六个阶段:需求分析:分析客户的业务和数据处理需求。概念结构设计:概念结构设计就是将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程,它是整个数据库设计的关键。逻辑结构设计:逻辑结构设计的任务就是把概念结构设计阶段已设计好的基本E-R图转换为关系模型。物理结构设计:数据库的物理结构设计是为一个给定的逻辑数据模型选定一个最适合应用要求的物理结构的过程。数据库实施数据库运行与维护主题2数据库设计相关知识逻辑结构设计(E-R图转换为对应关系模式)A.(1:1)联系的E-R图到关系模式的转换1)联系单独对应一个关系模式。BJ(班级编号,院系,专业名,人数)BZ(学号,姓名)SY(学号,班级编号)2)联系不单独对应一个关系模式,联系的属性及一方的主码加入另一方实体集对应的关系模式中。BJ(班级编号,院系,专业名,人数)BZ(学号,姓名,班级编号)或者BJ(班级编号,院系,专业名,人数,学号)BZ(学号,姓名)主题2数据库设计相关知识逻辑结构设计(E-R图转换为对应关系模式)B.(1:n)联系的E-R图到关系模式的转换1)联系单独对应一个关系模式。BJ(班级编号,院系,专业名,人数)XS(学号,姓名,专业名,性别,出生日期,总学分,备注)SY(学号,班级编号)2)联系不单独对应一个关系模式,则将联系的属性及1端的主码加入n端实体集对应的关系模式中,主码仍为n端的主码。BJ(班级编号,院系,专业名,人数)XS(学号,姓名,专业名,性别,出生日期,总学分,备注,班级编号)主题2数据库设计相关知识逻辑结构设计(E-R图转换为对应关系模式)C.(m:n)联系的E-R图到关系模式的转换对于(m∶n)的联