架构师培训讲义5-数据库结构设计解析.docx

架构师培训讲义5-数据库结构设计解析.docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
架构师培训讲义5-数据库结构设计解析

第五章详细设计阶段的数据库结构设计详细设计阶段包括:数据库设计、模块设计和界面设计。下面我们探讨一下数据库设计的有关问题。第一节关系数据库的结构设计一、面向过程的设计与实体关系图关系数据库的单元是表,在面向过程的设计中,建立一个关系数据库的第一步,需要仔细考虑实体-关系图(ERD),给每个实体建立一张表,每张表的数据域要与已经定义的实体相一致。然后,可以为每个表建立一个主键,如果没有合适的字段作为主键,可以自己创造一个,主键的数据必须是唯一的。1)实体实体指的是某些事物,企业需要存储有关这些事物的数据。实体实例表达的是实体的具体值。2)属性实体的描述特形称为属性,某些属性可以逻辑上被组合,称为组合属性,它在不同的数据建模语言中也被称作串联属性、合成属性或者数据结构。3)域于是属性的一个参数,定义了这个属性所能定义的合法值。事实上这个值和使用的数据库特点有关。4)标识符然后考虑实体之间的关系,关系基数符号如下:以此可以建立表与表之间的关系:实体之间的关系有三种,最简单的而且最有代表性的例子也就是学生、老师、锁柜和书的关系。也就是一对一(1:1)或一对多(1:N)或多对多(N:N)关系。比如:Student和Locker之间可以是一个一对一关系,因为每个学生都有一个相应的锁柜,而每个锁柜只给一个学生使用。Student和Book之间可以有一个一对多关系,因为每个学生可以有多本书,但每本书只归一个学生所有。Student和Teacher之间有一个多对多关系,每个学生可以有多个教师授课,而每个教师又可以为多个学生讲课。注意,一个实体可以参与多个关系,而每个关系可以有不同的对应关系。这里还有一个问题,就是多对多关系需要增加一个关联实体,比如如下的多对多关系:我们会发现,学生某门课的成绩应该放在什么地方呢?尽管模型中表达了学生选修了某门课程,但没有放置这门课程成绩的地方,所以需要增加一个关联实体。这样,我们就可以得到设计关系数据库的一般步骤:1,为每个实体类型建立一张表。2,为每张表选择一个主键(如果需要,可以定义一个)。3,增加外部码以建立一对多关系。4,建立几个新表来表示多对多关系。5,定义参照完整性约束。6,评价模式质量,并进行必要的改进。7,为每个字段选择适当的数据类型和取值范围。二、执行参照完整性建立关系主要需要建立主键和外键的关系,执行参照完整性表达了外键和主键间一致的状态。执行参照完整性表达的是:一个一致的关系数据库状态,每个外键的值必须有一个主键值与之对应。规则:1,当建立一个包含外键的记录的时候,应确保主表中相应的主键值要存在。2,当删除一条记录的时候,要确保所有相应外键的记录也被删除。3,当更改一个主键值的时候,要确保所有相应表外键值也跟随改变。三、评价模式质量一个高质量的数据模型应该具备以下特点,1,表中每行数据及主键是唯一的。2,冗余数据较少。3,容易实现将来数据模型的改变不过,提高数据库设计质量的方法有很多,但量化方法又很少,很大程度上依赖于设计师的经验和判断,下面提供几个注意点。1,行和关键字的唯一性主键是能够唯一定义一行数据的一列或者多列,主键中的列值不能为null,主键为数据库引擎提供了获取使据库表中某个特定行的方法,主键还用于保证引用的完整性。如果多个用户同时插入数据,则必须保证不会出现重复的主键。由于主键是必须存在的,而主键是不可重复的,显然表中的每一行也都是唯一的,这就是所有关系数据库模型都有一个基本要求,那就是主键和表中的行是唯一的。但我们应该如何来选择主键呢?智能键、常规建和代理键智能键是一种基于商业数据表示的键,例如SKU(Stock Keeping Unit 常用保存单元)就是智能键的例子。它定义一个10个字符的字段(Char(10)),它的可能分配如下,前4个字符为供应商代号,随后3个字符保存产品类型代号,最后3个字符保存一个序列号。常规键由现有商业数据中一个或多个列组成,比如社会保险号。尽管智能键和常规键不尽相同,但他们都是用商业相关数据组成,下面统一成为智能键。代理键是由系统生成的,与商业数据无关,比如自动增值列(Identity),GUID(globally unique identifier 全局唯一代码,16字符),这是通过取值算法得到的键值,后面将称之为GUID键。下面的例子包含三张表(作者Author,书籍Book,而AuthorBook是一张多对多的连接表,因为一个书籍可能由多个作者完成)。注意,在代理键完成的时候,需要多增加一个列值,这是因为代理键是系统自动生成,用户不可见的。数据大小使用智能键或代理键数据的大小是不一样的,因此一定要计算键的使用引起数据量的变化,显然,基于int的自动增加列数据量最小,但也要注意,int的最大值是有限的,而且不便于移动数据,这些都是考虑的因

文档评论(0)

little28 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档