项目二公司管理数据库系统的规划设计【教学目标】(1)理解数据库的基本概念。(2)理解数据库组织数据的模型。(3)掌握关系型数据库的有关基本概念。(4)理解范式理论。【能力目标】(1)能够对实际应用系统进行项目需求分析。(2)能够根据项目需求分析进行数据库的概念模型设计。(3)能够将E-R模型转换为关系模型。(4)能够利用范式理论对数据表进行优化设计。(5)通过项目需求分析,培养与客户沟通的能力。【工作任务】根据公司管理系统的工作流程,设计一个满足该公司管理的数据库。按照数据库设计的思想及基本步骤对公司管理数据库进行如下设计。(1)公司管理数据库的需求分析。(2)公司管理数据库的概念结构设计。(3)公司管理数据库的逻辑设计。(4)公司管理数据库的物理设计。理论知识准备根据数据模型应用目的的不同,可以将数据模型分为两类:概念模型(也称信息模式)和数据模型。1.实体实体是客观存在且相互区别的事物及事物之间的联系,例如,在数据库概念结构设计时有客户实体、订单实体、雇员实体和产品实体。2.属性属性是指实体所具有的某种特性。属性用来描述一个实体,例如,产品实体有产品ID、产品名等各种属性。2.12.1.1概念模型3.联系(1)一对一联系:如果对于实体A中的每一个实体,实体B中至多有一个实体与其发生联系,反之亦然,则称实体A与实体B是一对一联系,记作1:1。(2)一对多联系:如果对于实体A中的每一个实体,实体B中有n(n0)个实体与之发生联系;反之,对于实体B中的每一个实体,实体A中至多有一个实体与之发生联系,则称实体A与实体B是一对多联系,记作1:n。这是一种最常见的一种联系。(3)多对多联系:如果对于实体A中的每一个实体,实体B中有n(n≥0)个实体与之发生联系;反之,对于实体B中的每一个实体,实体A中有m(m≥0)个实体与之发生联系,则称实体A与实体B是多对多联系,记作m:n。图2-2一对多联系图2-3多对多联系4.E-R方法E-R方法是一种用来在数据库设计过程中表示数据库系统结构的方法,又被称为EAR方法或EAR模型。它的主导思想是使用实体(Entity)、实体的属性(Attribution)、实体之间的关系(Relationship)来表示数据库系统的结构。在E-R模型图中,用方框表示实体,用菱形表示联系,用椭圆形表示属性。雇员实体和订单实体之间的联系2.1.2数据模型1.数据模型的三要素现实世界中的客观事物经过概念模型的抽象和描述,最终要转换为计算机所能识别的数据模型。(1)数据结构。数据结构是对数据静态特征的描述。数据的静态特征包括数据的基本结构、数据间的联系和对数据取值范围的约束。(2)数据操作。数据操作是指对数据动态特征的描述,包括对数据进行的操作及相关操作规则。(3)数据的完整性约束。数据的完整性约束是对数据静态和动态特征的限定,是用来描述数据模型中数据及其联系应该具有的制约和依存规则,以保证数据的正确、有效和相容。2.层次模型数据库的有类型,是根据数据模型划分的。目前常用的数据模型主要有层次模型、网状模型、关系模型和面向对象模型。其中,层次模型、网状模型是非关系模型。(1)有且只有一个节点没有父节点,这个节点称为根节点。(2)根以外的其他节点有且只有一个父节点。3.网状模型在现实世界中,事物之间的联系更多的是非层次关系的,用层次模型表示非树形结构是很不直接的,网状模型则可以克服这一点。(1)允许一个以上的节点无父节点。(2)一个节点可以有多于一个的父节点。4.关系模型关系模型是目前应用最广泛,也是最重要的一种数据模型。重要的是RDBS提供了结构化查询语言(StrcturedQueryLanguage,SQL),它是在关系数据库中定义和操纵数据的标准语言。(1)数据结构。关系模型中基本的数据结构是二维表。每个实体可以看成一个二维表,它存放实体本身的数据,实体间的联系也用二维表表表达。在关系模型中,每个二维表称为一个关系,并且有一个名称,称为关系名。产品ID产品名类别ID单价(元)库存量(件)1牛奶12.302002冰激凌11.504003果冻13.003004打印纸240.001005墨盒2200.00150(2)数据操纵与完整性约束。关系模型的数据操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足关系模型的完整性约束条件。(3)存储结构。关系模型中,实体及实体间的联系都用二维表来表示。在数据库的物理组织中,二维表以文件形式存储。(4)优点。关系数据模型的主要优点如下。①具有严格的数据理论基础,关系数据模型是建立在严格的数据概念基础上的。②概念单一,不管是实体本身还是实体之间的联系都用关系(表)来表示,这些关系必须是规范化的,使得数据结构非常清晰、简单。③在用户的眼中,无论是原始数据还是结果都是二维表,不用考虑数据的存储路径。因此,提高了数据的独立性、安全性,同时也提高了开发效率。5.面向对象模型面向对象数据库系统支持面向对象数据模型。面向对象数据库是面向对象数据库技术和面向对象程序设计相结合的产物,面向对象的方法是面向对象数据库模型的基础,这种数据模型能够适应更复杂的数据处理技术。面向对象模型中的核心概念是对象(Object)和类Class)。(1)对象和类。对象类似于E-R模型中的实体,但更为复杂。每个对象不仅有数据特征,还有状态(State)特征和行为(Behavior)特征,并把它们封装在一起。(2)面向对象模型的优缺点。2.1.3数据库系统模型1.层次型数据库2.网络型数据库3.关系型数据库关系型数据库使用的存储结构是多个二维表格。表中的一行称为一条记录或元组,用来描述一个对象的信息;表中的一列称为一个字段或属性,用来描述对象的一个属性。2.1.4关系数据库的基本理论1.关系的定义关系模型的数据结构是用二维表的形式来表示实体及实体之间联系的数据模型。关系模型的数据结构是由行和列组成的二维表。任意两行互不相同,列值是不可分的数据项,行和列的次序任意。(1)表中每一项都必须是不可再分的最小数据项,这也是对关系的最基本限定。(2)表中不能出现数据完全相同的两行。(3)表中同一列的数据类型是相同的,也就是说,列中所有分量是同类型的数据,来自同一值域。如果把每一列称为一个属性,则每一列的列名或属性名不应该相同。(4)表中各行或各列的次序可以任意交换,不改变关系的实际意义。2.关系模型的常用术语(1)关系(Relation):一个关系通常对应于一张表,如表2-1所示。(2)元组(Tuple):二维表中的一行即为一个元组(记录)。(3)属性(Attribute):二维表中的一列即为一个属性,给每一个属性起一个名称即属性名。(4)域(Domain):属性的取值范围称为该属性的域。属性的域是由属性的性质及要表达的意义确定的,如商品的单价只能取大于零的数。(5)主关键字或主码(Key):表中的某个属性或几个属性组合称为关键字,它可以唯一确定一个元组,如产品关系中的产品ID,可以唯一确定一种产品,因此产品ID称为这个关系的关键字。(6)外关键字、外键或外码(ForeignKey):一个关系中的属性或属性组合不是本关系的主码,而是另一关系的主码,则称该属性或属性组合是该关系的外主关键字。(7)关系模式(RelationSchema):对关系的描述称为关系模式,它描述的是二维表的结构。关系模式一般表示为:关系名(属性1,属性2,…,属性n)例如,上面的关系可描述为:产品(产品ID,产品名,类别ID,单价,库存量)。在关系模型中,实体以及实体间的联系都是用关系来表示的。例如,学生、课程、选课之间的多对多联系在关系模型中可以表示如下。学生(学号,姓名,年龄,性别,专业)课程(课号,课程名,课时数)选修(学号,课程号,成绩)3.关系的完整性数据完整性是指数据库中数据的一致性和正确性。数据库是否具备完整性涉及数据是否正确、可信和一致。关系模型的完整性包括实体完整性、域完整性、参照完整性和用户定义的完整性。(1)实体完整性(EntityIntegrity):实体完整性的目的是确保数据库中所有实体的唯一性,也就是不应使用完全相同的数据记录。可以通过设定主键(PrimaryKey)、唯一键(UniqueKey)、唯一索引(UniqueIndex)和标识列(IdentityColumn)等多种方法来实现实体完整性,其中最常用的是使用主键。(2)区域完整性(DomainIntegrity):区域完整性是要求数据表中的数据位于某一个特定的允许范围内。可以使用默认值(Default)、核查(Check)、外键(ForeignKey)、数据类型(DataType)和规则(Rule)等多种方法来实现区域完整性。(3)参照完整性(ReferentialIntegrity):参照完整性是用来维护相关数据表之间数据一致性的手段,通过实现参照完整性,可以避免因一个数据表的记录改变而造成另一个数据表内的数据变成无效的值。(4)用户定义完整性:这种数据完整性由用户根据实际应用中的需要自行定义。可以用来实现用户定义完整性的方法有:规则、触发器、存储过程和数据表创建时可以使用的所有约束(Constraint)。例如,在employee表和p_order表中,如果某雇员负责的订单数超过5个,那么该雇员的“薪水”应大于5000。4.专门的关系运算专门的关系运算包括选择、投影、连接等。(1)选择运算(Selection)。选择运算是从指定的关系中,选取其中满足条件的若干个元组,组成新的关系。选择的结果是原关系的一个子集,且关系的模型不变。(2)投影运算。投影运算是从指定的关系中,按给定的条件选取若干个属性列,从而构成一个新的关系。(3)连接运算(Join)。选择和投影运算都属于单目运算,它们的操作对象只是一个关系。连接运算是双目运算,需要两个关系作为操作对象。2.1.5范式理论关系数据库范式理论是在数据库设计过程中将要依据的准则,数据库结构必须要满足这些准则,才能确保数据的准确性和可靠性。这些准则被称为规范化形式,即范式。在数据库设计过程中,对数据库进行检查和修改并使它符合范式的过程叫做规范化。范式按照规范化的级别分为5种:第一范式(1NF)第二范式(2NF)第三范式(3NF)第四范式(4NF)第五范式(5NF)在实际的数据库设计过程中,通常需要用到的是前三类范式。1.第一范式第一范式要求每一个数据项都不能拆分成两个或两个以上的数据项。例如,教师(编号,姓名,性别,职称职务)并不满足第一范式,因为“职称职务”属性可以再分解为职称、职务两个字段。课程编号课程名称课程类别学分授课情况部门教师001SQLServer实用技术信息技术3计算机应用工程系徐人凤002JAVA技术的开发应用信息技术2计算机应用工程系程伟彬………………2.第二范式如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式,即2NF。例如,在p_order表中,数据表的主键是订单ID。其中,“产品名”字段完全依赖于“产品ID”字段,而不是取决于订单ID。课程编号课程名称课程类别学分部门教师001SQLServer实用技术信息技术3计算机应用工程系徐人凤002JAVA技术的开发应用信息技术2计算机应用工程系程伟彬………………不满足第二范式的p_order表订单ID产品ID产品名数量(件)雇员ID客户ID订货日期27269毛巾1000011712/05/200628156脸盆500021815/05/2006订单ID产品ID数量(件)雇员ID客户ID订货日期272691000011712/05/200628156500021815/05/2006满足第二范式的p_order表3.第三范式如果一个数据表已经满足第二范式,而且该数据表中的任何两个非主键字段的数值之间不存在函数依赖关系,那么该数据表满足第三范式,即3NF。不满足第三范式的employee表雇员ID姓名性别薪水(元)奖金(元)0001张三男30006000002