??xml version="1.0" encoding="utf-8" standalone="yes"?>
数据cd
参数
描述
char(n)
n=1 to 2000字节
定长字符Ԍn字节长,如果不指定长度,~省?个字节长Q一个汉字ؓ(f)2字节Q?/td>
varchar2(n)
n=1 to 4000字节
可变长的字符Ԍ具体定义时指明最大长度nQ?br />
q种数据cd可以放数字、字母以?qing)ASCII码字W集(或者EBCDIC{数据库pȝ接受的字W集标准)中的所有符受?br />
如果数据长度没有辑ֈ最大值nQOracle 8i?x)根据数据大自动调节字D长度,
如果你的数据前后有空|Oracle 8i?x)自动将其删厅RVARCHAR2是最常用的数据类型?br />
可做索引的最大长?209?/td>
number(m,n)
m=1 to 38
n=-84 to 127可变长的数值列Q允?、正值及(qing)负|m是所有有效数字的位数Qn是小数点以后的位数?br />
如:(x)number(5,2)Q则q个字段的最大值是99,999Q如果数DZ位数限制׃(x)被截取多余的位数?br />
如:(x)number(5,2)Q但在一行数据中的这个字D输?75.316Q则真正保存到字D中的数值是575.32?br />
如:(x)number(3,0)Q输?75.316Q真正保存的数据?75?
date
?/td>
从公元前4712q??日到公元4712q?2?1日的所有合法日期,
Oracle 8i其实在内部是?个字节来保存日期数据Q在定义中还包括时、分、秒?br />
~省格式为DD-MON-YYQ如07-11?00 表示2000q?1?日?
long
?/td>
可变长字W列Q最大长度限制是2GBQ用于不需要作字符串搜索的长串数据Q如果要q行字符搜烦p用varchar2cd?br />
long是一U较老的数据cdQ将来会(x)逐渐被BLOB、CLOB、NCLOB{大的对象数据类型所取代?
raw(n)
n=1 to 2000
可变长二q制数据Q在具体定义字段的时候必L明最大长度nQOracle 8i用这U格式来保存较小的图形文件或带格式的文本文gQ如Miceosoft Word文档?br />
raw是一U较老的数据cdQ将来会(x)逐渐被BLOB、CLOB、NCLOB{大的对象数据类型所取代?
long raw
?/td>
可变长二q制数据Q最大长度是2GB。Oracle 8i用这U格式来保存较大的图形文件或带格式的文本文gQ如Miceosoft Word文档Q以?qing)音频、视频等非文本文件?br />
在同一张表中不能同时有longcd和long rawcdQlong raw也是一U较老的数据cdQ将来会(x)逐渐被BLOB、CLOB、NCLOB{大的对象数据类型所取代?
blob
clob
nclob?/td>
三种大型对象(LOB)Q用来保存较大的囑Ş文g或带格式的文本文Ӟ如Miceosoft Word文档Q以?qing)音频、视频等非文本文Ӟ最大长度是4GB?br />
LOB有几U类型,取决于你使用的字节的cdQOracle 8i实实在在地将q些数据存储在数据库内部保存?br />
可以执行d、存储、写入等Ҏ(gu)操作?
bfile
?/td>
在数据库外部保存的大型二q制对象文gQ最大长度是4GB?br />
q种外部的LOBcdQ通过数据库记录变化情况,但是数据的具体保存是在数据库外部q行的?br />
Oracle 8i可以d、查询BFILEQ但是不能写入?br />
大小由操作系l决定?
]]>
表A MySQL 数据cd
数据cd |
描述 |
字节 |
推荐使用 |
SMALLINT |
整数Q从-32000?+32000范围 |
2 |
存储相对比较?yu)的整数?/p> 比如: q纪Q数?/p> |
INT |
整数Q从-2000000000 ?+2000000000 范围 |
4 |
存储中等整数 例如: 距离 |
BIGINT |
不能用SMALLINT ?INT描述的超大整数?/p> |
8 |
存储大的整?/p> 例如: U学/数学数据 |
FLOAT |
单精度Q点型数据 |
4 |
存储数数据 例如:量Q温?/p> |
DOUBLE |
双精度Q点型数据 |
8 |
需要双_ֺ存储的小数数?/p> 例如:U学数据 |
DECIMAL |
用户自定义精度的点型数?/p> |
变量;取决于精度与长度 |
以特别高的精度存储小数数据?/p> 例如:货币数额Q科学数?/p> |
CHAR |
固定长度的字W串 |
特定字符串长?高达255字符) |
存储通常包含预定义字W串的变?/p> 例如: 定期航线Q国家或邮编 |
VARCHAR |
h最大限制的可变长度的字W串 |
变量; 1 + 实际字符串长?(高达 255 字符) |
存储不同长度的字W串?高达一个特定的最大限?. 例如:名字Q密码,短文标签 |
TEXT |
没有最大长度限制的可变长度的字W串 |
Variable; 2 +?actual string length |
存储大型文本数据 例如: 新闻故事Q品描q?/p> |
BLOB |
二进制字W串 |
变量Q? + 实际字符串长?/p> |
存储二进制数?/p> 例如:囄Q附Ӟ二进制文?/p> |
DATE |
?yyyy-mm-dd格式的日?/p> |
3 |
存储日期 例如:生日Q品满?/p> |
TIME |
?hh:mm:ss格式的时?/p> |
3 |
存储旉或时间间?/p> 例如:报警壎ͼ两时间之间的间隔QQ务开?l束旉 |
DATETIME |
以yyyy-mm-ddhh:mm:ss格式l合日期和时?/p> |
8 |
存储包含日期和时间的数据 例如:提醒的hQ事?/p> |
TIMESTAMP |
以yyyy-mm-ddhh:mm:ss格式l合日期和时?/p> |
4 |
记录x旉 例如Q事件提醒器Q?#8220;最后进?#8221;的时间标?/p> |
YEAR |
?yyyy格式的年?/p> |
1 |
存储q䆾 例如:毕业q_(d)出生q?/p> |
ENUM |
一l数据,用户可从中选择其中一?/p> |
1?2个字?/p> |
存储字符属性,只能从中选择之一 例如:布尔量选择Q如性别 |
SET |
一l数据,用户可从中选择其中0Q?或更多?/p> |
??字节;取决于设|的大小 |
存储字符属性,可从中选择多个字符的联合?/p> 例如:多选项选择Q比如业余爱好和兴趣?/p> |
对于一个完整的列表和详l描qͼ可以查看MySQL manual。你也可以阅L?em>Choosing the Right Type for a Column?/em>
W一范式Q?NFQ:(x)在关pL式R中的每一个具体关pr中,如果每个属性?都是不可再分的最数据单位,则称R是第一范式的关pR例Q如职工P姓名Q电(sh)话号码组成一个表Q一个h可能有一个办公室?sh)?和一个家里电(sh)话号码) 规范成ؓ(f)1NF有三U方法:(x)
一是重复存储职工号和姓名。这P关键字只能是?sh)话L(fng)?
二是职工号ؓ(f)关键字,?sh)话L(fng)分ؓ(f)单位?sh)话和住宅?sh)话两个属?
三是职工号ؓ(f)关键字,但强制每条记录只能有一个电(sh)话号码?
以上三个Ҏ(gu)Q第一U方法最不可取,按实际情况选取后两U情c(din)?
W二范式Q?NFQ:(x)如果关系模式RQUQFQ中的所有非d性都完全依赖于Q意一个候选关键字Q则U关pR 是属于第二范式的?
例:(x)选课关系 SCIQSNOQCNOQGRADEQCREDITQ其中SNO为学P CNOE号QGRADEGE 为成l,CREDIT 为学分?׃上条Ӟ关键字ؓ(f)l合关键字(SNOQCNOQ?
在应用中使用以上关系模式有以下问题:(x)
a.数据冗余Q假讑一门课?0个学生选修Q学分就 重复40ơ?
b.更新异常Q若调整了某评的学分,相应的元lCREDIT值都要更斎ͼ有可能会(x)出现同一门课学分不同?
c.插入异常Q如计划开新课Q由于没人选修Q没有学号关键字Q只能等有h选修才能把课E和学分存入?
d.删除异常Q若学生已经l业Q从当前数据库删除选修记录。某些门评新生未选修Q则此门评?qing)学分记录无法保存?
原因Q非关键字属性CREDIT仅函C赖于CNOQ也是CREDIT部分依赖l合关键字(SNOQCNOQ而不是完全依赖?
解决Ҏ(gu)Q分成两个关pL?SC1QSNOQCNOQGRADEQ,C2QCNOQCREDITQ。新关系包括两个关系模式Q它们之间通过SC1中的外关键字CNO相联p,需要时再进行自然联接,恢复了原来的关系
W三范式Q?NFQ:(x)如果关系模式RQUQFQ中的所有非d性对M候选关键字都不存在传递信赖,则称关系R是属于第三范式的?
例:(x)如S1QSNOQSNAMEQDNOQDNAMEQLOCATIONQ?各属性分别代表学P
姓名Q所在系Q系名称Q系地址?
关键字SNO军_各个属性。由于是单个关键字,没有部分依赖的问题,肯定?NF。但q关p肯定有大量的冗余,有关学生所在的几个属性DNOQDNAMEQLOCATION重复存储,插入Q删除和修改时也生类g上例的情c(din)?
原因Q关pM存在传递依赖造成的。即SNO -> DNO?而DNO -> SNO却不存在QDNO -> LOCATION, 因此关键?SNO ?LOCATION 函数军_是通过传递依?SNO -> LOCATION 实现的。也是_(d)SNO不直接决定非d性LOCATION?
解决目地Q每个关pL式中不能留有传递依赖?
解决Ҏ(gu)Q分Z个关p?SQSNOQSNAMEQDNOQ,DQDNOQDNAMEQLOCATIONQ?
注意Q关pS中不能没有外关键字DNO。否则两个关pM间失去联pR?/p>
BCNFQ如果关pL式RQUQFQ的所有属性(包括d性和非主属性)都不传递依赖于R的Q何候选关键字Q那么称关系R是属于BCNF的。或是关pL式RQ如果每个决定因素都包含关键字(而不是被关键字所包含Q,则RCNF的关pL式?
例:(x)配g理关系模式 WPEQWNOQPNOQENOQQNTQ分别表仓库P配gP职工P数量。有以下条g
a.一个仓库有多个职工?
b.一个职工仅在一个仓库工作?
c.每个仓库里一U型L(fng)配g׃责,但一个h可以理几种配g?
d.同一U型L(fng)配g可以分放在几个仓库中?
分析Q由以上?PNO 不能定QNTQ由l合属性(WNOQPNOQ来军_Q存在函C赖(WNOQPNOQ?-> ENO。由于每个仓库里的一U配件由专h负责Q而一个h可以理几种配gQ所以有l合属性(WNOQPNOQ才能确定负责hQ有QWNOQPNOQ?> ENO。因?一个职工仅在一个仓库工作,有ENO -> WNO。由于每个仓库里的一U配件由专h负责Q而一个职工仅在一个仓库工作,?QENOQPNOQ?> QNT?
找一下候选关键字Q因为(WNOQPNOQ?-> QNTQ(WNOQPNOQ?> ENO Q因?QWNOQPNOQ可以决定整个元l,是一个候选关键字。根据ENO->WNOQ(ENOQPNOQ?>QNTQ故QENOQPNOQ也能决定整个元l,为另一个候选关键字。属性ENOQW(xu)NOQPNO 均ؓ(f)d性,只有一个非d性QNT。它对Q何一个候选关键字都是完全函数依赖的,q且是直接依赖,所以该关系模式?NF?
分析一下主属性。因为ENO->WNOQ主属性ENO是WNO的决定因素,但是它本w不是关键字Q只是组合关键字的一部分。这造成d性WNO对另外一个候选关键字QENOQPNOQ的?分依赖,因ؓ(f)QENOQPNOQ?> ENO但反q来不成立,而P->WNOQ故QENOQPNOQ?> WNO 也是传递依赖?
虽然没有非主属性对候选关键辽的传递依赖,但存在主属性对候选关键字的传递依赖,同样也会(x)带来ȝ。如一个新职工分配C库工作,但暂时处于实?fn)阶D,没有独立负责Ҏ(gu)些配件的理d。由于缺关键字的一部分PNO而无法插入到该关pM厅R又如某个hҎ(gu)不管配g了去负责安全Q则在删除配件的同时该职工也?x)被删除?
解决办法Q分成管理EPQENOQPNOQQNTQ,关键字是QENOQPNOQ工作EWQENOQW(xu)NOQ其关键字是ENO
~点Q分解后函数依赖的保持性较差。如此例中,׃分解,函数依赖QWNOQPNOQ?> ENO 丢失? 因而对原来的语义有所破坏。没有体现出每个仓库里一U部件由专h负责。有可能出现 一部g׃个h或两个以上的人来同时理。因此,分解之后的关pL式降低了部分完整性约束?
一个关pd解成多个关系Q要使得分解有意义,L(fng)的要求是分解后不丢失原来的信息。这些信息不仅包括数据本w,而且包括由函C赖所表示的数据之间的怺制约。进行分解的目标是达到更高一U的规范化程度,但是分解的同时必考虑两个问题Q无损联接性和保持函数依赖。有时往往不可能做到既有无损联接性,又完全保持函C赖。需要根据需要进行权衡?
1NF直到BCNF的四U范式之间有如下关系Q?
BCNF包含?NF包含2NF包含1NF
结Q?/strong>
目地Q规范化目的是ɾl构更合理,消除存储异常Q数据冗余量,便于插入、删除和更新
原则Q遵从概念单一?"一事一?原则Q即一个关pL式描qC个实体或实体间的一U联pR规范的实质是概念的单一化?
Ҏ(gu)Q将关系模式投媄(jing)分解成两个或两个以上的关pL式?
要求Q分解后的关pL式集合应当与原关pL?{h(hun)"Q即l过自然联接可以恢复原关p而不丢失信息Qƈ保持属性间合理的联pR?
注意Q一个关pL式结q分解可以得C同关pL式集合,也就是说分解Ҏ(gu)不是唯一的。最冗余的要求必须以分解后的数据库能够表达原来数据库所有信息ؓ(f)前提来实现。其Ҏ(gu)目标是节省存储空_(d)避免数据不一致性,提高对关pȝ操作效率Q同时满_用需求。实际上Qƈ不一定要求全部模式都辑ֈBCNF不可。有时故意保留部分冗余可能更方便数据查询。尤其对于那些更新频度不高,查询频度极高的数据库pȝ更是如此?
在关pL据库中,除了函数依赖之外q有多g赖,联接依赖的问题,从而提ZW四范式Q第五范式等更高一U的规范化要求。在此,以后再谈?
各位朋友Q你看过后有何感惻I其实QQ何一本数据库基础理论的书都会(x)讲这些东西,考虑到很多网友是半途出Ӟ来做数据库。特找一本书大抄Ҏ(gu)一把,各位有什么问题,也别问我了,自已L一本关pL据库理论的书ȝ吧,说不定,对各位大有帮助。说是说以上是基理论的东西,请大家想惻I你在做数据库设计的时候有没有考虑q遵q以上几个范式呢Q有没有在数据库设计做得不好之时Q想一惻IҎ(gu)以上所Ԍ到底是违反了W几个范式呢Q?
我见q的数据库设计,很少有h做到很符合以上几个范式的Q一般说来,W一范式大家都可以遵守,完全遵守W二W三范式的h很少了,遵守的h一定就是设计数据库的高手了QBCNF的范式出现机?x)较(yu),而且?x)破坏完整性,你可以在做设计之时不考虑它,当然在ORACLE中可通过触发器解军_~点。以后我们共同做设计之时Q也希望大家遵守以上几个范式?/p>
数据库管理系l?Database Management System)是一U操U和理数据库的大型软gQ是用于建立、用和l护数据库,UDBMS。它Ҏ(gu)据库q行l一的管理和控制Q以保证数据库的安全性和完整性。用户通过DBMS讉K数据库中的数据,数据库管理员也通过DBMSq行数据库的l护工作。它提供多种功能Q可使多个应用程序和用户用不同的Ҏ(gu)在同时或不同时刻d立,修改和询问数据库?/p>
按功能划分,数据库管理系l大致可分ؓ(f)6个部分:(x)
(1)模式译Q提供数据定义语a(DDL)。用它书写的数据库模式被译为内部表C。数据库的逻辑l构、完整性约束和物理储存l构保存在内部的数据字典中。数据库的各U数据操?如查找、修攏V插入和删除{?和数据库的维护管理都是以数据库模式ؓ(f)依据的?/p>
(2)应用E序的编译:(x)把包含着讉K数据库语句的应用E序Q编译成在DBMS支持下可q行的目标程序?/p>
(3)交互式查询:(x)提供易用的交互式查询语aQ如SQL。DBMS负责执行查询命o(h)Qƈ查询结果显C在屏幕上?/p>
(4)数据的组l与存取Q提供数据在外围储存讑֤上的物理l织与存取方法?/p>
怺务运行管理:(x)提供事务q行理?qing)运行日志,事务q行的安全性监控和数据完整性检查,事务的ƈ发控制及(qing)pȝ恢复{功能?/p>
(6)数据库的l护Qؓ(f)数据库管理员提供软g支持Q包括数据安全控制、完整性保障、数据库备䆾、数据库重组以及(qing)性能监控{维护工兗?/p>
Z关系模型的数据库理pȝ已日d善,q已作ؓ(f)商品化Y件广泛应用于各行各业。它在各h务器l构的分布式多用L(fng)境中的应用,使数据库pȝ的应用进一步扩展。随着新型数据模型?qing)数据管理的实现技术的推进Q可以预期DBMS软g的性能q将更新和完善,应用领域也将q一步地拓宽?/p>