1.31.2008

规范化-数据库设计原则(转)

http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0605jiangt/

1.22.2008

关系型数据库设计范式的理解

关系型数据库设计范式的理解

  所谓范式,是关系型数据库关系模式规范化的标准,从规范化的宽松到严格,分别

为不同的范式,通常使用的有第一范式、第二范式、第三范式及BC范式等。范式是建立

在函数依赖基础上的。

函数依赖

定义:设有关系模式R(U),X和Y是属性集U的子集,函数依赖是形为X→Y的一个命题,

对任意R中两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么FD X→Y在关系模式R(U)中成

立。X→Y读作‘X函数决定Y’,或‘Y函数依赖于X’。

  通俗的讲,如果一个表中某一个字段Y的值是由另外一个字段或一组字段X的值来确

定的,就称为Y函数依赖于X。

  函数依赖应该是通过理解数据项和企业的规则来决定的,根据表的内容得出的函数

依赖可能是不正确的。

第一范式(1NF)

定义:果关系模式R的每个关系r的属性都是不可分的数据项,那么就称R是第一范式的模

式。
  简单的说,每一个属性都是原子项,不可分割。
  1NF是关系模式应具备的最起码的条件,如果数据库设计不能满足第一范式,就不称

为关系型数据库。关系数据库设计研究的关系规范化是在1NF之上进行的。

第二范式(2NF)

定义:如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么就称R是第

二范式。
简单的说,第二范式要满足以下的条件:首先要满足第一范式,其次每个非主属性要完

全函数依赖与候选键,或者是主键。也就是说,每个非主属性是由整个主键函数决定的

,而不能由主键的一部分来决定。
举个例子:
  有股票日行情表的主键是股票代码和交易日期组成。非主属性中有收盘价和成交量

等,都是由主键,即股票代码和交易日期函数决定的,单独的股票代码或者交易日期都

不能函数决定这些非主属性。如果这个表中有非主属性股票简称,则股票简称是可以由

股票代码来函数决定的,这样股票简称这个非主属性就不是完全函数依赖于候选键,这

样的设计就不满足第二范式。

第三范式(3NF)

定义:如果关系模式R是2NF,且关系模式R(U,F)中的所有非主属性对任何候选关键

字都不存在传递依赖,则称关系R是属于第三范式。
简单的说,第三范式要满足以下的条件:首先要满足第二范式,其次非主属性之间不存

在函数依赖。由于满足了第二范式,表示每个非主属性都函数依赖于主键。如果非主属

性之间存在了函数依赖,就会存在传递依赖,这样就不满足第三范式。
举个例子:
在股票基本情况表中,主键是股票代码,有非主属性所属一级行业和所属二级行业。根

据业务规则,所属二级行业能够函数决定所属一级行业,这就表示存在这样一种关系:

股票代码函数决定所属二级行业,所属二级行业函数决定所属一级行业,这就形成了传

递依赖,这样的设计就不符合第三范式。
不过在实际运用中,为查询和使用的方便,有时也会违反第三范式。如上例,如果没有

所属一级行业的属性,需要查询所属一级行业的相关股票,需要查询时使用函数来从二

级行业中函数生成所属一级行业,使用性能上会受影响。所以通常会加上所属一级行业

的属性。

BC范式(BCNF)

BC范式是第三范式的增强版,不过也有人说是直接从1NF发展过来的,即每个属性,包

括主属性或非主属性,都完全依赖于候选键,并且不存在传递依赖情况。

1.01.2008

RAR for Linux

a 向压缩包中添加文件
c 添加压缩注释
cf 添加文件注释
cw 向文件中写压缩注释
d 从压缩包中删除文件
e 在当前目录下解压缩文件
f 刷新压缩文件中的文件
i[par]= 在压缩包中查找指定字符串
k 锁住压缩包
l[t,b] 列出压缩包的内容[t(technical)详细列表,b(bare)简单列表]
m[f] 向压缩包里移动内容[f(files only)只移动文件]
p 在标准输出上打印文件内容
r 修复压缩包
rc 修复丢失卷
rn 重命名压缩的文件
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[name|-] 将压缩包转换为自解压文件,或从自解压文件转换为压缩包
t 测试压缩文件
u 更新压缩包中的文件
v[t,b] 列出压缩包中文件(冗长型)[t(technical)详细列表,b(bare)简单列表]
x 以全路径方式解压文件

- 停止switches扫描
ad 在目的路径后添加压缩文件名
ag[format] 用当前日期生成压缩文件名
ap 设置压缩包内部的路径
as 同步压缩内容
av 设置授权认证(注册版功能)
av- 禁用授权认证检查
c- 禁止内容显示
cfg- 不读取设置
cl 将名称转换为小写
cu 将名称转换为大写
df 在压缩完成后删除源文件
dh 打开共享文件
ds 对于固实压缩包,禁用名称排序
e 设置文件不包含的属性
ed 不添加空目录
en 不设置‘压缩文件尾标志’块
ep 在名称中去掉路径
ep1 在名称中去掉基本路径
ep2 展开全路径
f 刷新文件
hp[password] 对文件数据和文件头都进行加密
idp 禁用百分比显示
ierr 给标准错误输出发送所有信息
ilog[name] 生成错误日志文件(注册版功能)
inul 禁用所有信息
isnd 启用声效
k 锁住压缩包
kb 保留破损的解压文件
m<0..5> 设置压缩率(0-存储...3-默认...5-最大)
mc 设置高级压缩参数
md 以KB显示大小(64,128,256,512,1024,2048,4096 或者A-G)
ms[ext;ext] 指定存储的文件类型
o+ 覆盖已存在文件
o- 不覆盖已存在文件
ol 将符号链接保存为链接而不是文件
ow 保存或恢复文件属主/组
p[password] 设置密码
p- 不查询密码
r 对子目录内容循环
r0 只对通配符进行子目录内容循环
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[,v[-],e] 创建固实压缩包
s- 禁用固实压缩
sfx[name] 创建自解压压缩包
t 压缩后进行解压测试
ta 处理在(YYYYMMDDHHMMSS格式)日期后修改的文件
tb 处理在(YYYYMMDDHHMMSS格式)日期前修改的文件
tk 保留初始压缩时间
tl 设置压缩时间为最新文件的时间
tn 处理在时间后修改的文件
to 处理在时间前修改的文件
ts[N] 保存或恢复文件时间(修改,创建,访问)
u 更新文件
v 以自动分卷大小分卷压缩,或列出所有分卷
v[k,b] 以*1000大小分卷压缩[k-*1024, b-*1]
ver[n] 文件版本控制
vn 使用旧的分卷命名方式
vp 每次分卷前暂停
w 设置工作目录
x 排除指定文件
x@ 从标准输入中读取要排除的文件名
x@> 排除列表文件中指定的文件
y 对所有问题均回复yes
z 从文件中读取压缩包内容
============================================
查看压缩包中的文件
$rar l XXX.rar 或者 $rar v XXX.rar
查看压缩包中的文件(只看有什么文件)
$rar lb XXX.rar 或者 $rar vb XXX.rar
查看压缩包中的文件(详细信息)
$rar lt XXX.rar 或者 $rar vt XXX.rar
============================================
把压缩包的内容解压到当前目录
$rar e XXX.rar
把压缩包的内容解压到指定目录,比如/home/yxd/tmp/下面
$rar e XXX.rar /home/yxd/tmp/
把压缩包解的内容压到指定目录,比如/home/yxd/tmp/下面,包含压缩包中的路径
$rar x XXX.rar /home/yxd/tmp/
============================================
压缩指定的一个文件,比如aaa,以默认压缩率
$rar a XXX.rar aaa
压缩指定的一个文件,比如aaa,以最大压缩率
$rar a -m5 XXX.rar aaa
压缩指定的一个目录下的所有文件,比如ddd目录下的所有文件
$rar a XXX.rar ddd/
压缩指定的一个目录下的所有文件,比如ddd目录下的所有文件和所有子目录
$rar a -r XXX.rar ddd/
压缩指定的一个目录下的所有文件,比如ddd目录下的所有文件和所有子目录,但是不包含空目录
$rar a -r -ed XXX.rar ddd/
压缩指定的一个目录下的所有文件,比如ddd目录,连目录也一起压缩,包括子目录
$rar a XXX.rar ddd
============================================
分卷压缩指定的一个文件,比如aaa,分卷大小为5000B
$rar a -v5 XXX.rar aaa
分卷压缩指定的一个文件,比如aaa,分卷大小为5k(5*1024B)
$rar a -v5k XXX.rar aaa
分卷压缩指定的一个文件,比如aaa,分卷大小为5B
$rar a -v5b XXX.rar aaa
============================================

来自:http://zhangjingking.spaces.live.com