数据库逻辑设计与物理设计.ppt

上传人:za****8 文档编号:14803065 上传时间:2020-07-31 格式:PPT 页数:83 大小:1.27MB
返回 下载 相关 举报
数据库逻辑设计与物理设计.ppt_第1页
第1页 / 共83页
数据库逻辑设计与物理设计.ppt_第2页
第2页 / 共83页
数据库逻辑设计与物理设计.ppt_第3页
第3页 / 共83页
点击查看更多>>
资源描述
第八章 数据库物理设计,本章主要内容,数据库物理设计的任务、方法与步骤 关系规范化理论及其应用 数据库、表等的创建,SQL数据定义语言(DDL) 数据库完整性及其设计 数据库物理设计,8.1 物理设计概述,数据库物理设计 将为关系数据模型选取一个最适合实际应用环境的物理结构的过程。物理结构包括数据库存储记录安排与存取方法等。 具备三个方面的知识: 所选用的DBMS的功能; 所使用计算机硬件特别是存储设备的特性; 应用环境与用户需求 三个步骤: 确定数据库的存储结构 确定数据的存取方法 对数据库物理结构的评价,8.3 关系规范化理论,理解关系模式可能的四种异常 掌握函数依赖的基本概念 掌握1NF、2NF、3NF、BCNF和4NF的概念和特点 掌握规范化的基本步骤,冗余与异常,冗余:同一数据在数据库中反复出现,冗余与异常,冗余带来的异常 数据冗余太大:浪费大量的存储空间。 插入异常:该插的数据插不了。 删除异常:不该删除的数据被删了。 更新异常:更新数据时维护数据完整性代价大。如某系更换系主任后,必须修改与该系学生有关的每一个元组。,数据依赖:是通过关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。最重要的数据依赖是函数依赖FD (Functional Dependency) 关系模式的简化:R(U, F) 例如:关系模式为Student 属性组USno, Sdept, Mname, Cname, Grade 。 F Sno Sdept, Sdept Mname, (Sno, Cname) Grade ,数据依赖,结论: Student关系模式不是一个好的模式。 “好”的模式不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。 引起上述异常的原因是存在于模式中的某些不合适的数据依赖。 解决方法是通过分解关系模式来消除其中不合适的数据依赖。如把上述模式分成三个关系模式: S(Sno,Sdept,SnoSDEPT) SG(Sno,Cname,Grade,(Sno,Cname)Grade) DEPT(Sdept,Mname,SDEPTMname) 这三个模式都不会发生插入异常、删除异常等,数据的冗余也得到了很好的控制。,数据依赖,规范化理论:通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。 函数依赖 函数依赖的定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作XY,若XY,并且YX, 则记为XY;若Y不函数依赖于X, 则记为XY。 说明1:函数依赖是指R的所有关系实例均要满足的约束条件。 说明2:函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖。如“姓名年龄” 。,规范化,所谓函数依赖是指一个或一组属性的值可以决定其他属性的值。设X,Y是关系的两个不同的属性组,如果X的取值确定时,Y的取值也随之确定,就称X函数决定Y或Y函数依赖于X,表示为XY。其中X称为决定因素。,完全函数依赖与部分函数依赖:在关系模式R(U)中,若XY,且对于X的任何一个真子集X,都有X Y, 则称Y完全函数依赖于X,记作X Y。若XY,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作X P Y。 例: 关系SC(Sno, Cno, Grade)中,由于SnoGrade,Cno Grade, 因此:(Sno, Cno) Grade 。 传递函数依赖:在关系模式R(U)中,如果XY,YZ,且Y X,YX,则称Z传递函数依赖于X ,记作X t Z 。若YX, 即XY,则Z直接依赖于X。 例: 关系Std(Sno, Sdept, Mname)中,有SnoSdept,SdeptMname,则Mname传递函数依赖于Sno。,范式(Normal Form NF):是符合某一种级别的关系模式的集合。范式分第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF) 。各种范式之间存在联系: 1NF2NF3NFBCNF4NF 某一关系模式R为第n范式,可简记为RnNF。,1NF 定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF。 1NF是对关系模式的最起码的要求,不满足1NF的数据库模式不能称为关系数据库。 例: 关系模式SLC(Sno, Sdept, Sloc, Cno, Grade),其中:Sloc为学生住处,假设每个系的学生住在同一个地方。函数依赖有 SnoSdept,SdeptSloc,(Sno, Cno) P Grade,Sno P Sloc。SLC的码为(Sno, Cno),SLC 1NF。,1NF模式存在的问题:SLC不是一个好的关系模式 数据冗余度大: 插入异常: 删除异常: 修改异常: 引起原因:Sdept、Sloc部分函数依赖于码(Sno,Cno)。 解决方法:采用投影分解法,将SLC分解为两个模式SC(Sno, Cno, Grade)、SL(Sno, Sdept, Sloc),消除部分函数依赖。,2、2NF 定义:若关系模式R1NF,并且每一个非主属性都完全函数依赖于R的码,则R2NF。若R2NF,则R1NF。 例:SLC(Sno,Sdept, Sloc,Cno,Grade)1NF SLC(Sno,Sdept,Sloc,Cno,Grade)2NF SC(Sno,Cno,Grade)2NF SL(Sno,Sdept,Sloc)2NF 分解:采用投影分解法将一个1NF的关系分解为多个2NF关系,可以在一定程度上减轻原1NF关系中存在的数据冗余度大、插入异常、删除异常、修改异常等问题,但不能完全消除。 例:关系SL(Sno, Sdept, Sloc)中函数依赖有SnoSdept,SdeptSloc,SnoSloc,即SL中存在非主属性Sloc对码Sno的传递函数依赖。,将1NF分解为2NF 找出关系模式R中的所有部分依赖XZ,其中X为主键中的一部分,Z为非主键属性 将所有部分依赖的Z构成一个新的关系R1,同时将X复制到R1中,作为R1的主键。 将原关系R中的Z删除,形成一个新关系R2,主键不变,外键为X。 如果R1、R2仍不是2NF,则重复上述步骤,直到分解后的所有模式都是2NF。,2NF模式存在的问题:(SL不是一个好的关系模式) 数据冗余度大:若计算机系有10个学生,则计算机系学生的Sloc值就要重复存储10次。 插入异常:如某系刚成立,暂无住校学生,该系的信息就无法插入。 删除异常:如某系学生全部毕业时,删除了该系学生信息的同时该系的信息也被删除了。 修改异常:如学校调整某系学生住处时,必须修改该系所有学生的Sloc值。 引起原因:Sloc传递函数依赖于码Sno。 解决方法:采用投影分解法,将SL分解为两个关系模式SD(Sno,Sdept)、DL(Sdept,Sloc) ,以消除传递函数依赖。,3NF 定义:一个满足2NF的关系模式中每个非主键属性都不传递依赖于主键,则称R3NF。若R3NF,则R2NF。 例: SL(Sno,Sdept,Sloc)2NF SL(Sno,Sdept,Sloc)3NF SD(Sno,Sdept)3NF DL(Sdept,Sloc)3NF 若R3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。 采用投影分解法将一个2NF的关系分解为多个3NF关系,可以在一定程度上减轻原2NF关系中存在的数据冗余度大、插入异常、删除异常、修改异常等问题,但不能完全消除。,将2NF分解为3NF 找出关系模式R中(主键为W)所有的函数依赖XZ,其中X不是候选键,Z不是X的真子集。 生成一个新的关系R1(XZ),X为主键 删除原关系R中的Z属性,形成新的关系R2,主键仍为W,外键为X。 检查 R1与R2,如果仍有传递依赖,重复以上步骤,直到分解后的关系均为3NF,规范化的代价:级别越高,关系越多,效率越低 基本原则 确保每个关系都能满足3NF 适当增加数据冗余 规范化方法 检查每个关系是否是1NF 不是,则分解;是,再检查是否2NF 不是,继续分解;是,再检查是否3NF 不是,再分解。,分析过程 XY(xydm,xymc,xyjj,xydz,lxdh),XB(xbbh,xbmc,xdz,lxdh),不属于1NF? KC(kcdm,kcmc,xf,xs,syxs,kcjj),XS可以不要 KB(kcdm,jseh,jsdm,jxbh,zc,jc)处理:增加 一个主键KBH,再进行适当的冗余KB(kbh,kcdm,kcmc,jseh,jsdm,jsmc,jxbh,zc,jc) 冗余XSCJ(xh,xm,bh,bj,kcdm,kcmc,jsdm,jsmc,pscj,kscj),3NF模式存在的问题 设在关系模式STJ(S,T,J)中,S、T、J分别表示学生、教师和课程,假设每一教师只教一门课,每门课由若干教师教,某学生选定某门课就确定了一个固定教师,则有函数依赖:(S,J)T,(S,T)J,TJ,显然(S,J)和(S,T)都为候选码,该模式没有非主属性,STJ3NF。但它存在问题: 数据冗余度大:虽一个教师只教一门课,但每个选修该教师该门课的学生元组都要记录这一信息。 插入异常:如学生刚入校尚未选课,因主属性不能为空,该生信息就无法存入数据库;同样如某教师开设了新课,但尚未有学生选修,则该信息也无法存入数据库。 删除异常:如选修某课的学生全部毕业时删除他们信息的同时相应教师开设该课的信息也被删除。 修改异常:如某教师开设的某门课改名后,所有选修该教师该门课的学生都应进行修改。 引起原因:存在(S,T) p 主属性J。 解决方法:采用投影分解法,将STJ分解为两个关系模式SJ(S,J)和TJ(T,J),BCNF 定义:设关系模式R 1NF,如果对于R的每个函数依赖XY,若Y不属于X,则X必含有候选码,那么RBCNF。若RBCNF ,则R3NF。 例:关系模式SJP(S,J,P)中,S、J、P分别表示学生、课程和名次,每个学生选修每门课程的成绩都有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次)。则有函数依赖(S,J)P,(J,P)S,所以(S,J)与(J,P)都可以作为候选码,SJPBCNF 。 性质 若R3NF,且R只有一个候选码,则R必属于BCNF。 所有非主属性对每一个码都是完全函数依赖。 所有的主属性对每一个不包含它的码都是完全函数依赖。 没有任何属性完全函数依赖于非码的任何一组属性。 从函数依赖的范畴考虑,BCNF已完成了模式的彻底分解,消除了插入、删除和更新异常,数据冗余度大大降低,但从数据依赖的角度,BCNF的关系模式仍存在一定的问题。,8.4 数据定义语言,8.4 数据定义语言,一、数据库与表的定义 1、定义数据库 主数据文件 辅数据文件 日志文件 2、数据库创建 图形界面方式 命令方式,8.4 数据定义语言,一、数据库与表的定义 CREATE DATABASE ON PRIMARY LOG ON :=( NAME=逻辑文件名, FILENAME=操作系统文件名 ,SIZE=文件大小 ,MAXSIZE=文件最大值|UNLIMITED ,FILEGROWTH=文件增长率),8.4 数据定义语言,一、数据库与表的定义 创建教务管理数据库,要求如下: 数据库名:jwgl2 显式定义主数据文件 主文件逻辑文件名:jwgl2_data 主文件物理文件:d:mydatajwgl2_data.mdf 文件大小:10MB 最大:15MB 文件增长率:20% 显式定义日志文件 日志文件逻辑文件名:jwgl2_log 日志文件物理文件名:d:mydatajwgl2_log.ldf 文件大小:3MB 最大:5MB 文件增长率:1MB,CREATE DATABASE jwgl2 ON PRIMARY( NAME=jwgl2_data, FILENAME=d:mydatajwgl2_data.mdf, SIZE=10, MAXSIZE=15, FILEGROWTH=20%) LOG ON( NAME=jwgl2_log, FILENAME=d:mydatajwgl2_log.ldf, SIZE=3, MAXSIZE=5, FILEGROWTH=1),8.4 数据定义语言,一、数据库与表的定义 2、删除数据库 DROP DATABASE 数据库名 ,n DROP DATABASE jwgl2 3、数据库修改,8.4 数据定义语言,一、数据库与表的定义 3、数据库修改 ALTER DATABASE 数据库名 | | MODIFY NAME = 新数据库名 其中: := ADD FILE ,.n /*添加文件 TO FILEGROUP 文件组名| DEFAULT /*添加到指定文件组 | ADD LOG FILE ,.n /*添加日志文件 | REMOVE FILE 逻辑文件名 /*修改逻辑文件名 | MODIFY FILE /*修改物理文件名 MODIFY NAME:修改数据库名,8.4 数据定义语言,一、数据库与表的定义 2、表的定义 表的创建:依据关系模式 创建方法:设计器与SQL命令 例如:学生表XS(xh,xm,xb,csny,zy,jtdz,rxsj,kkcj,lxdh,email,bh,ssh),8.4 数据定义语言,一、数据库与表的定义 2、表的定义 使用设计器 使用SQL命令 CREATE TABLE ( , , ); 表名:要定义的基本表的名字 列名:组成该表的各个属性(列) 列级完整性约束条件:相应属性列的完整性约束条件 表级完整性约束条件:一个或多个属性列的完整性约束条件。 常用的完整性约束有:主码约束PRIMARY KEY、唯一性约束UNIQUE、非空值约束NOT NULL、参照完整性约束FOREIGN KEY REFERENCES。,8.4 数据定义语言,一、数据库与表的定义 2、表的定义 CREATE TABLE XS( xh char(10) NOT NULL PRIMARY KEY, xm nchar(20) NOT NULL, xb char(2) NOT NULL DEFAULT (男), csny datetime , zy char(4) NOT NULL REFERENCES zy(zydm), jtdz nchar(50) , rxsj datetime NOT NULL DEFAULT (getdate(), kkcj decimal(5, 1) NOT NULL, lxdh nchar(11) , email nchar(50), bh char(8) NOT NULL REFERENCES bj(bh), ssh char(6) REFERENCES ss(ssh) ),8.4 数据定义语言,创建专业表 ZY(zydm,zymc,xz,cc,xwlx,zsnf,xydm) 其中:主键为zydm,外键为xydm,引用表为XY; 学制(xz)为35年,默认4,层次(cc)默认为本科,招生年份为4位整型数 创建该表的命令如下: CREATE TABLE ZY( zydm char(4) NOT NULL , zymc nchar(50) NOT NULL, xz smallint NOT NULL DEFAULT (4), cc char(4) NOT NULL DEFAULT (本科), zsnf int NOT NULL , xydm char(10) NOT NULL, PRIMARY KEY (zydm), FOREIGN KEY(xydm) REFERENCES XY(xydm), CHECK (xz=3) ),表的修改与删除,ALTER TABLE 表名 ADD 子句/* 增加列 ALTER COLUMN 子句 /* 修改列的定义 DROP 子句/* 删除列 ADD CONSTRAINT 子句/* 增加约束 DROP CONSTRAINT 子句/* 删除约束,表的修改与删除,【8.18】在创建ZY表时漏了一列zsnf,现通过修改命令补上 ALTER TABLE ZY ADD zsnf int 【8.19】为ZY表增加一个约束,cc要么是本科,要么是专科 ALTER TABLE ZY ADD CONSTRAINT CK_ZY2 CHECK (cc in(专科,本科) 【8.20】将ZY表中的xydm由10位改为2位。 ALTER TABLE ZY ALTER COLUMN xydm char(2),索引的定义,基本概念 索引:数据库对象,索引值+物理指针 作用:提高查询速度,维护的代价 分类: 聚簇:物理顺序,一个表一个 非聚簇:逻辑顺序,一个表可以多个 索引与约束 主键:聚簇索引 唯一性:唯一性索引,索引的定义,索引创建 SQL命令 CREATE UNIQUE CLUSTERED | NONCLUSTERED INDEX 索引名 ON 表名(列名 ASC | DESC ,.n ) CREATE UNIQUE INDEX in_zymc ON ZY(zymc) CREATE INDEX in_xm ON XS(xm) 索引删除,外模式的定义,外模式:主要通过视图来实现 面向不同用户 需求 符合用户习惯的别名 简化系统的使用,三、 SQL程序设计,1、T-SQL变量 全局变量: SQL Server本身定义的,可以直接使用,系统变量名 SERVERNAME,version 局部变量:用户自定义,先声明后使用 声明:declare 变量名 数据类型 DECLARE var1 int, var2 int,三、 SQL程序设计,1、T-SQL变量 局部变量:用户自定义,先声明后使用 声明:declare 变量名 数据类型 DECLARE var1 int, var2 int 赋值与使用 SET var1=123 SET var2=34 SELECT var1=123,var2=34,三、 SQL程序设计,2、流程控制语句 语句块定义BEGINEND,用于分支或循环中的语句分组 条件判断语句IFELSE IF 逻辑表达式 语句块1 ELSE 语句块2 ,USE student DECLARE bjg int SELECT bjg=COUNT(*) FROM SC WHERE C#=1 and Grade0 BEGIN SELECT bjg 不及格人数 SELECT * FROM SC WHERE C#=1 and Grade60 END ELSE SELECT 没有不及格,阅读程序,回答问题,三、 SQL程序设计,2、流程控制语句 循环语句While WHILE 逻辑表达式 语句块1 BREAK 语句块2 CONTINUE 语句块3 如果逻辑表达式为真,则执行循环体内的语句块,如存在BREAK语句则直接退出循环;如存在CONTINUE语句则直接重新循环。BREAK和CONTINUE通常与IF语句联合使用。,计算1100之间的偶数和。 DECLARE i int,sum int SELECT i=2,sum=0 WHILE i=100 BEGIN SET sum=sum+i SET i=i+2 END PRINT 偶数和为:+CAST(sum as varchar(5),阅读程序,在编程环境中默写输入该程序,调试程序,四、存储过程,存储过程,8.5 数据库完整性控制,一、数据库完整性 数据库中数据的正确性和相容性,它由各种各样的完整性约束来保证。 作用 防止对数据库进行不合语义的更新 基于DBMS,易于保证程序独立性 能够兼顾完整性与效能 分类 表级、记录级、列级 静态约束与动态约束,8.5 数据库完整性控制,一、数据库完整性 1、列级约束:约束列上的取值如数据格式、数据类型、取值范围、空值等 2、元组约束:约束一个元组中各个列之间的关系 3. 关系约束:表中各条记录之间及表与表之间应该满足的条件,如惟一性标识、表与表之间的参照完整性,8.5 数据库完整性控制,二、SQL SERVER的完整性 1、实体完整性 主键约束:列级- primary key 组合主键: primary key (列1,列2,) 唯一性约束:保证值不重复,可以有一个空值 2、域完整性 非空(not null) 默认值(default),CREATE TABLE XS( xh char(10) NOT NULL PRIMARY KEY, xm nchar(20) NOT NULL, xb char(2) NOT NULL DEFAULT (男), ),8.5 数据库完整性控制,二、SQL SERVER的完整性 检查约束:可以针对列、元组、表 CHECK (),CREATE TABLE XSCJ1( xh char(10) NOT NULL, kscj decimal(5, 1) NOT NULL, PRIMARY KEY (xh,kcdm), CHECK (kscj=0 ),8.5 数据库完整性控制,二、SQL SERVER的完整性 3、参照完整性:保证表之间数据的一致性,8.5 数据库完整性控制,二、SQL SERVER的完整性 3、参照完整性:保证表之间数据的一致性 主表与子表 作用: 不能在子表中添加主表中不存在的记录 主表与子表的键值保持一致 FOREIGN KEY () REFERENCES () ON DELETE ON UPDATE ,8.5 数据库完整性控制,二、SQL SERVER的完整性 3、参照完整性:保证表之间数据的一致性 FOREIGN KEY () REFERENCES () ON DELETE ON UPDATE 参照动作 NO ACTION:缺省动作(限制)CASCADE:级联 SET NULL:置空值 SET DEFAULT:置缺省值,8.5 数据库完整性控制,对XY表与ZY表进行参照完整性设置,要求当XY表进行更新或删除时,ZY表中外键值作相应变化。 1、创建XY表 CREATE TABLE XY( xydm char(4) NOT NULL PRIMARY KEY, xymc nchar(50) NOT NULL, xydz nchar(50) ),8.5 数据库完整性控制,2、创建专业表 CREATE TABLE ZY( zydm char(4) NOT NULL , zymc nchar(50) NOT NULL, xz smallint NOT NULL DEFAULT (4), cc char(4) NOT NULL DEFAULT (本科), zsnf int NOT NULL , xydm char(4) NOT NULL, PRIMARY KEY (zydm), FOREIGN KEY(xydm) REFERENCES XY(xydm) ON DELETE CASCADE ON UPDATE CASCADE, CHECK (xz=3) ),8.5 数据库的完整性,三、触发器 特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,它在试图更改触发器所保护的数据时自动执行 常用功能 完成比约束更复杂的数据约束 检查SQL所做的操作是否被允许 修改其它数据表里的数据 发送SQL Mail 返回自定义的错误信息 防止数据表构结更改或数据表被删除,61,触发器触发时: 系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除 inserted 表 临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 deleted 表 临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作,触发器类型 After触发器:记录更变完之后才被激活执行 INSTEAD OF触发器:在 INSERT、UPDATE和DELETE操作之前激活,有取代原SQL语句的功能 触发器创建 CREATE TRIGGER ON AS ,CREATE TRIGGER update_cj ON SC AFTER UPDATE AS DECLARE cj decimal(5,1) SELECT cj=grade FROM inserted IF cj(SELECT grade FROM deleted ) ROLLBACK TRANSACTION,8.6 数据库的物理设计,数据库物理设计的概念:为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程。 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。 对物理结构进行评价,评价的重点是时间和空间效率。,数据库物理设计的内容和方法,准备工作 充分了解应用环境,详细分析要运行的事务,以获得选择数据库物理设计所需的参数。 充分了解所用RDBMS的内部特征,特别是系统提供的存取方法和存储结构。 选择数据库物理设计所需的参数 数据查询事务:查询的关系、查询条件所涉及的属性、连接条件所涉及的属性、查询的投影属性等。 数据更新事务:被更新的关系、每个关系上的更新操作条件所涉及的属性、修改操作要改变的属性值、每个事务在各关系上运行的频率和性能要求。 关系数据库物理设计的内容:为关系模式选择存取方法(建立存取路径);设计关系、索引等数据库文件的物理存储结构。,二、关系模式存取方法选择,1、索引存取:是使用最普遍的存取方法,选择索引存取方法的一般规则是: 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)。 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。 索引数过多会增加维护索引和查找索引的开销,2、聚簇存取:为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块称为聚簇。 Create cluster index Stusname on Student(Sname);在Student表的Sname列上建立一个聚簇索引,表中的记录将按Sname值的升序存放。 一个数据库可以建立多个聚簇,但一个基本表上最多只能建立一个聚簇索引。 聚簇的特点: 大大提高按聚簇属性进行查询的效率。 节省了存储空间 聚簇只能提高某些特定应用的性能,而且建立与维护聚簇的开销是相当大的。,聚簇的适用范围 单个关系独立聚簇, 多个关系组合聚簇。 当通过聚簇码进行访问或连接是该关系的主要应用,与聚簇码无关的其他访问很少或是次要时,可以使用聚簇。 3、HASH存取:如果一个关系的属性主要出现在等值连接条件中或主要出现在相等比较选择条件中,而且满足下列两个条件之一时,可以选择HASH存取方法。 关系的大小可预知,而且不变。 关系的大小动态改变,但所选用的DBMS提供了动态HASH存取方法。,三、确定数据库的存储结构,数据的存放位置 存储结构,包括关系、索引、聚簇、日志、备份等的存储安排和存储结构;确定系统配置等。 综合考虑存取时间、存储空间利用率、维护代价三方面的代价,这三个方面常常是相互矛盾的,如消除一切冗余数据虽能够节约存储空间和减少维护代价,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。,确定数据的存放位置: 分开存放:易变部分与稳定部分、经常存取部分与存取频率较低部分 数据与索引分开存放 数据与日志分开存放 海量数据的分区存放 表分区功能 水平分区 垂直分区,水平分区的操作 1、创建文件组。文件组数与分区数相同,而且应位于不同的磁盘 2、创建分区函数 CREATE PARTITION FUNCTION customer_partfunc(int) AS RANGE RIGHT FOR VALUES(250000,500000,750000) 3、创建分区方案。分区函数必须与分区方案相关联,以便将分区指向不同的文件组 CREATE PARTITION SCHEME customer_partscheme AS PARTITION customer_partfunc TO(fg1,fg2,fg3,fg4) 4、将分区方案关联到表,创建分区表。ON子句的使用。,确定系统配置: DBMS产品提供的存储分配参数有同时使用数据库的用户数和对象数、使用的缓冲区长度和个数、时间片大小、数据库大小、装填因子、锁的数目等。在系统运行时还要根据系统实际运行情况做进一步的调整,以期切实改进系统性能 配置方法 内存配置:服务器内存、索引内存 连接配置:并发连接、远程连接、默认连接 数据库设置:索引填充因子、备份与还原、数据库默认位置 安全性 评价物理结构,6.6 数据库的实施和维护,数据库实施:完成数据库物理设计后,设计人员要用RDBMS提供的DDL和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受的源代码,再经过调试产生目标模式,然后就可以组织数据入库,这就是数据库实施。 一、数据的载入和应用程序的调试 数据的载入:人工 筛选数据:需要装入数据库中的数据通常都分散在各个部门的数据文件中,首先必须把需要入库的数据筛选出来。 转换数据格式:筛选出来的需要入库的数据,其格式往往不符合数据库要求,还需要进行转换。 输入数据:将转换好的数据输入计算机中。 校验数据:检查输入的数据是否有误。,计算机辅助数据入库 筛选数据。 输入数据:数据输入子系统应提供输入界面。 校验数据:数据输入子系统采用多种检验技术检查输入数据的正确性。 转换数据:数据输入子系统根据数据库系统的要求,从录入的数据中抽取有用成分,对其进行分类,然后转换数据格式 综合数据:数据输入子系统对转换好的数据根据系统的要求进一步综合成最终数据。 应用程序的编制与调试:数据库应用程序的设计应该与数据设计并行进行,因此在组织数据入库的同时还要调试应用程序。调试应用程序时由于数据入库尚未完成,可先使用模拟数据,二、数据库的试运行,时机:应用程序调试完成且已有小部分数据入库后,就可以进行数据库的试运行。 试运行的任务: 实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能、性能是否满足设计要求。,数据的分期入库:采用分期输入数据的方法先输入小批量数据供先期联合调试使用待试运行基本合格后再输入大批量数据逐步增加数据量,逐步完成运行评价。 数据库的转储和恢复:必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏。,三、数据库的运行和维护,主要工作(DBA): 数据库的转储和恢复:转储和恢复是系统正式运行后最重要的维护工作之一。 数据库的安全性、完整性控制:DBA要根据实际情况修改原有安全性控制。由于应用环境的变化,数据库的完整性约束条件也会变化,也需DBA不断修正,以满足用户要求。 数据库性能的监督、分析和改进:利用监测工具获取系统运行过程中一系列性能参数的值。通过仔细分析这些数据,判断当前系统是否处于最佳运行状态。如果不是,则需要通过调整某些参数来进一步改进数据库性能 数据库的重组织和重构造 重组织 重构造,关于实验,实验6:数据库与表的创建与管理 关于图书借阅系统的需求说明: 图书馆有多本图书,图书由出版社出版。图书馆有管理员,管理员管理图书。用户有不同类型,每种类型有可借数与最长借阅时间。用户通过管理员借阅图书,借阅有借阅数量与借阅时间的限制。,要求: 1、进行概念设计,设计相应的ER图 2、进行逻辑设计,并进行规范化检查,要求达到3NF。 3、在SQL 2005中定义数据库与相应的关系表。数据库名称为:TSGL 4、其他可参考实验6的要求。 5、在每个数据库表中输入一定的模拟数据,输入的顺序:无外键的表有外键的表,实验7:只做存储过程部分,触发器不做,小结,软件工程生存期与数据库工程生存期 数据库设计全过程 规划 需求分析 概念设计 逻辑设计 物理设计 实现 运行与维护 需求分析 分析的目的 方法 需求分析的目标,下课了。,休息。,研 究,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!