数据库设计
1 概念
1.1 描述
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,
建立数据库及其应用系统,使之能够有效地存储数据。
1.2 数据库设计包含四部分
<1>需求分析
<2>概念结构设计
<3>逻辑结构设计
<4>物理结构设计
1.3 数据库设计的原则
<1>明白自己的系统为OLTP系统还是OLAP系统
<2>降低对数据库功能的依赖
<3>严格遵从数据库三范式
<4>适当的考虑数据分块
<5>尽量保证记录的唯一标识存在
2 概念结构设计
2.1 E--R图设计
E--R图分为局部E--R图和全局E--R图
E--R模型基本符号
实体的表示:长方形
联系的表示:菱形,如1:1、1:n(m:1)、(m:n)
属性的表示:椭圆形
2.2 确定实体与属性的原则:
<1>能作为属性的尽量作为属性而不要划为实体
<2>作为属性的数据元素与实体之间的联系只能是1:n的联系
<3>作为属性的数据项不能再用其他属性加以描述,
也不能与其他实体或属性发生联系。
3 逻辑结构设计
3.1 概念
是将基本E--R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构的过程。
3.2 逻辑结构设计的过程分为
<1>将概念结构转换为现有DBMS支持的关系、网状或层次模型中的某一种数据模型
<2>从功能和性能要求上对转换的模型进行评价,看它是否满足用户要求
<3>对数据模型进行优化
3.3 逻辑结构设计的原则
<1>一个实体型转换为一个关系模型,实体的属性就是关系的属性,实体的键就是关系的键;
<2>一个联系转换为一个关系模式,与该联系相连的每个实体型的键以及联系的属性都转换为关系的属性。
4 配置数据库连接
4.1 步骤
1.打开powerdesigner,依次点击:database--connect
2.点击connect,打开对话窗口:
3.然后点击Configuer按钮,弹出数据源配置Configuer Data Connections对话框:
4.把页签切换到第三个Connetion Profiles页签中,如果连接存在,选中就行,如果不存在,点击add Data Source数据库图标进行新增,弹出Connection
Profile Definition对话框
此对话框中需要输入以下信息
Connection profile name: 输入数据库连接文件名,它会自动加上后缀名.dcp;
Directory:数据库连接文件存放路径;可以任意;
Connetction type: 选择JDBC;
DBMS type : 数据库类型选择Oracle;
Server name: 服务器名称;也相当于对应PL/SQL登陆页面的数据库;
Database name: 数据库名字;
User name: 登陆数据库名字;
Password: 密码
JDBC Driver class: 驱动类;只要下拉框选择就行;
JDBC Driver Jar URL: 访问的服务器路径
JDBC connection files: 驱动包;需要指向ojdbc14.jar或者其他驱动的包的按钮路径;
5.点击Test Connection 按钮进行连接测试;
测试连接是否成功;成功会弹出成功或者失败消息框,测试成功后。点击确定按钮,返回数据源配置Configuer Data Connections对话框,列表中就会多出一个.dcp文件,点击确定即可。
5 导出数据库
5.1 步骤
导出数据库表方法如下:
1.启动PowerDesigner
2.菜单:File->Reverse Engineer ->Database 出来New Physical Data Model对话框,DBMS选择ORACLE Version 10g 选项,其他可以选择默认值,点击“确定”按钮,弹出Database Reverse Engineering Options对话框:
3.然后在下拉框中选择我们之前建立的数据源文件,并再次输入数据库User ID和password,点击Connection即可连接至数据库,并得取所有的数据库对象,在此我们选择所有的Table。
6 PowerDesigner
6.1 描述
Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计的全过程。利用Power Designer可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库制作结构模型,也能对团队设计模型进行控制。他可以与许多流行的数据库设计软件,例如PowerBuilder,Delphi,VB等相配合使缩短开发时间和使系统设计更优化。
power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具。使用它可以分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。在这里,概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。
7 导入数据库
7.1 方法
将视图切换到physical模型下,连接数据库:单击database\database connection,弹出下面窗口,进行数据库的连接。
链接完成后单击tools\forward engineer\schema generate,将弹出下面的窗口,单击generate,即可将物理模型导入数据库。
8 实体
8.1 实体间的关系
实体间的三种关系:
1.标识关系(identifying relationship);
2.多对多关系(many- to- many relationship);
3.非标识关系(non-identifying relationship )。
标识关系是指把实体1中的主键作为实体2中的外键,且作为实体2的主键, 非标识关系是指把实体1中的主键作为实体2中的外键,但不作为实体2的主键,
8.2 概念
Erwin中的实体有两种:独立实体和依赖实体。实体被指定作为独立实体,或依赖实体,取决于其键的获得方式。 独立实体由方角盒来指定,独立实体不依赖于模型中任何其它实体来标识;依赖实体被指定为圆角盒,依赖实体依存于模型中的其它实体,修改实体名
8.3 修改实体名称
方法一:单击实体名,按F2键可 以对实体名称进行修改;
方法二:右键单击欲进行修改的实体,选择Entity Properties;
8.4 方法三:双击实体修改。列的增删
方法一:右键单击所选实体?≡馎tiue,在弹出的trbts窗口中添加é境蛐薷氖粜裕?方法二:单击所选实体,按tb键也可以进行添加,删除或修改操作。
第二篇:数据库知识点总结
文件处理系统存在问题:数据的冗余和不一致,数据访问困难,数据孤立,完整性问题,原子性问题,并发访问异常,安全性问题
数据库三级抽象 物理层:最低层次的抽象,描述数据实际上是怎样存储的。逻辑层:比物理层层次稍高的抽象,描述数据库中存储什么数据及这些数据间存在什么关系。视图层:最高层次的抽象,只描述整个数据库的某个部分
数据操纵语言DML:使用户可以访问或操作那些按其某种适当的数据模型组织起来的数据。 过程化DML:要求用户指定需要什么数据以及如何获得这些数据。非过程化DML:只要求用户指定需要什么数据,而不指明如何获得这些数据
事务状态图活动状态:初始状态;事务执行时处于这个状态。部分提交状态:最后一条语句执行后。失败状态:发现正常的执行不能继续之后。中止状态:事务回滚并且数据库已恢复到事务开始执行前的状态之后。提交状态:成功完成后
事务进入中止状态,系统有两种选择:重启事务:事务中止是硬件错误或不是由事务的内部逻辑产生的软件错误时。杀死事务:事务的内部逻辑错误,或者由于输入错误,或所需数据在数据库中没有找到
可恢复调度:对于每对事务和,如果读取了由所写的数据项,则先于提交无级联调度:对于每对事务和,如果读取了由所写的数据项,则必须在这一读取前提交,容易验证无级联调度总是可恢复的。级联回滚:因一个事无故障导致一系列事物回滚的现象。
强实体集:主码是生成的模式的主码。弱实体集:主码由其所依赖的强实体集的主码与弱实体集的分辨符组合而成
超码:一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组。候选码:任意子集都不能成为超码。主码:代表被数据库设计者选中的用来在同一关系中区分不同元组的候选码
事务ACID特性: 原子性:事务的所有操作在数据库中要么全部正确反映,要么全部不反映。一致性:隔离执行事务时保持数据库的一致性。隔离性:尽管多个事务可能并发执行,但系统保证,对于每对事务和,在看来,或者在开始之前已经完成执行,或者在完成之后开始执行。持久性:一个事务成功完成后,它对数据库的改变是永久的,即使系统可能出现故障
视图:任何不是逻辑模型的一部分但作为虚关系对用户可见的关系。屏蔽数据库的逻辑细节,提供防止用户访问数据库的某些部分的安全性机制。create view v as<…>
物化视图:保证如果用于定义视图的实际关系改变了,视图也跟着修改。视图维护:保证视图一直是最新的过程。用其他视图定义视图:一个视图可能被用到定义另一个视图的表达式中视图展开:该过程家丁视图定义不是递归的
完整性约束:保证当授权用户对数据库进行修改时不会破坏数据的一致性,防止对数据的意外破坏
DBMS数据库管理系统:由一个互相关联的数据的集合和一组可以访问这些数据的程序组成。该集合为数据库。目标:提供一个可以方便高效的存取数据库信息的环境。
广义投影:运算通过允许在投影列表中使用算数函数来对投影进行扩展(E),其中E是任意关系代数表达式,而F1…Fn中的每一个都是涉及常量以及E的模式中属性的算术表达式
删除:r ← r-E r是关系而E是关系代数查询 插入:r ← r E
更新:r ←
数据定义:数据库中的关系集合由数据定义语言(DDL)指定给系统,包括每个关系的模式每个属性的值域完整性约束每个关系维持的索引集合,每个关系安全性和权限信息。磁盘上每个关系的物理存储结构
建造表create table r(A1D1,…,AnDn,<完整性约束1>,<完整性约束k>)r是关系名 Ai是关系r模式的一个属性名Di是属性Ai域的值的域类型
not null数据不允许有空值
insert into 关系名 values()
delete from 关系名(表名)删除
drop table r 去掉一个关系
alter table r add A D 修改关系表r是已有关系名字 A是要添加的属性的名字 D是要添加的属性的域
as子句给结果关系中的属性赋个名称 group by 子句中的一个或多个属性是用来构造分组的 distinct用来删除重复元组 having分组限定条件
空值检测null 有空值参与比较运算,结果是unknow
集合成员资格:in测试元组是否是集合中成员,也可以用于枚举集合
集合的比较:至少比某一个要大>some(some任意一个all所有每一个) =some等价于in <>all等价于not in
将“关系A包含B”写成“not exists(B except A)”
测试是否存在重复元组:结果中没有重复的元组,unique返回真
删除:delete from r where P
插入:insert into account values
更新:update account set
事务:由查询和更新语句序列组成commit work提交当前事务rollback work回滚当前事务
not null约束:禁止在该属性上插入一个空值;同样可以被用在用户定义域的声明中,由此该域类型的属性不能为空
unique:指出Aj1….Ajm属性形成了一个候选码,候选码的属性可为空
check:保证属性值满足指定的条件
参照完整性:保证一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现
函数依赖推导:模式R上函数依赖α→β成立的条件是:如果对任意合法关系r(R)及r中任意两个元组t1和t2,若t1[α]=t2[α],则t1[β]=t2[β]
保持依赖判别:r分解为n份后,f的闭包不变。
视图等价的串行调度
1对于每个数据项Q,若事务Ti在调度S中读取Q的初始值,那么在调度S’中Ti也必须读取Q的初始值。2对于每个数据项Q,若事务Ti在调度S执行read(Q),并且读取的值是由事务Tj执行的write(Q)产生的,则在调度S’中,Ti的read(Q)操作读取的值Q也必须是有Tj的同一个write(Q)产生的。3对于每个数据项Q,若在调度S中有事务执行最后的write(Q)操作,则在调度S’中操作该事务也必须执行最后的write(Q)
BCNF满足条件:对所有中形如α→β的函数依赖下面至少一个成立:α→β是平凡依赖;α是R的一个超码。分解方法:设R为不属于BCNF的一个模式,则至少有一个非平凡的函数依赖α→β,且α不是R的超码,我们在设计中用一下两个模式取代R:(αβ)(R-(β-α))
3NF满足条件:中所有形如α→β的函数依赖,至少有以下之一成立:α→β是一个平凡的函数依赖;α是R的一个超码;β-α中的每个属性A都包含在R的一个候选码中
无损分解:如果我们把r投影至R1和R2上,然后计算投影结果的自然连接,我们仍然得到一摸一样的r,ΠR1(r)??ΠR2(r)=r。判别:R1交R2是二者中任意一个的超码。
属性集闭包(Armstring公理)
自反律:βα,则α→β
增补律:α→β,则γα→βγ
传递律:α→β及β→γ则α→γ
合并律α→β及→γ,α→βγ
分解律α→βγ,则α→βα→γ
伪传递律:若有α→β及γβ→δ则αγ→δ
闭包:α为一属性集,我们称在函数依赖集F下由α函数确定的所有属性的集合为F下α的闭包
属性集闭包算法用途:1判定α是否为超码,通过计算,看是否包含了R中的所有属性。2通过检验是否β,我们可以验证函数依赖α→β是否成立。3对任意γ,我们找出闭包;对任意的S,我们输出一个函数依赖γS
无关属性:考虑函数依赖集F及F中函数依赖α→β,如果A∈α并且F逻辑蕴涵(F—﹛α→β﹜)∪﹛(α—A)→β﹜,则A在α中是无关的;如果如果A∈β并且F逻辑蕴涵(F—﹛α→β﹜)∪﹛α—(β→A)﹜,则属性A在β中是无关的
正则覆盖(Canonical cover)
F的一个正则覆盖Fc是一个依赖集,使得F逻辑蕴涵Fc中的所有依赖,并且Fc逻辑蕴涵F中的所有依赖,此外Fc必须具有如下性质:Fc中任何函数依赖都不含无关属性;Fc中函数依赖的左半部都是唯一的
若一个调度s于一个串行调度冲突等价,称调度s是冲突可串行化的
如果调度S可以经过一系列非冲突指令交换转换s’,我们称S与S’是冲突等价的如果某个调度视图等价于一个串行调度,则我们说这个调度S是视图可串行化的
共享锁若事务Ti获得了数据项Q的共享型锁,则Ti可读取但不能写Q排它锁:若事务Ti获得了数据项Q的排他型锁,则Ti可读取又能写Q
两阶段封锁协议:增长阶段事务可以获得锁,但不能释放锁。缩减阶段事务可以释放锁,但不能获得锁。
两阶段封锁协议保证冲突可串行化,并不保证不发生死锁,级联回滚可能发生严格两阶段封锁协议:不仅要求封锁是两阶段,还要求事务持有的所有排它锁必须在事务提交后方可释放。强两阶段封锁协议:要求事务提交之前不得释放任何锁
基于图的协议:树形协议只使用排他锁树形协议遵循规则:Ti首次加锁可以对任何一个数据项进行;此后Ti对数据项Q加锁的前提是Ti持有Q的父项上的锁;对数据项解锁可以随时进行;数据项被Ti加锁并解锁后,Ti不能再对数据项加锁
Distinct primary foreign references check union Intersect Except