??xml version="1.0" encoding="utf-8" standalone="yes"?>
以面的问题可真是不是问题的问题,如果遇到同样的问题的朋友看看是否也是犯了同样的错?br />
最后发现是一个中文的I格Q我在删除该变量时发现有一个空格的距离较大?/p>
message /zz3in1/SrvTest
description
The requested resource (/zz3in1/SrvTest) is not available.
q是Z呢?
用过?./../SrvTest q个是不行的?/./SrvTestq样可以。还?/SrvTest也可以?br />
---------------------------------------------------------------------
?span lang="EN-US">:面上元?span lang="EN-US">name属性和JavaScript引用的名U必M致包括大写
否则会提CZ一个错误信?span lang="EN-US"> "引用的元素ؓI或者不是对?span lang="EN-US">"
---------------------------------------------------------------------
对象属?span lang="EN-US">
document.title //
讄文标题{h?span lang="EN-US">HTML?span lang="EN-US"><title>标签
document.bgColor //
讄面背景?span lang="EN-US">
document.fgColor //
讄前景?span lang="EN-US">(文本颜色)
document.linkColor //
未点击过的链接颜?span lang="EN-US">
document.alinkColor //
Ȁz链?span lang="EN-US">(焦点在此链接?span lang="EN-US">)的颜?span lang="EN-US">
document.vlinkColor //
已点击过的链接颜?span lang="EN-US">
document.URL //
讄URL属性从而在同一H口打开另一|页
document.fileCreatedDate //
文g建立日期Q只d?span lang="EN-US">
document.fileModifiedDate //
文g修改日期Q只d?span lang="EN-US">
document.fileSize //
文g大小Q只d?span lang="EN-US">
document.cookie //
讄和读?span lang="EN-US">cookie
document.charset //
讄字符?体中?span lang="EN-US">:gb2312
---------------------------------------------------------------------
对象Ҏ
document.write() //
动态向面写入内容
document.createElement(Tag) //
创徏一?span lang="EN-US">html标签对象
document.getElementById(ID) //
获得指定ID值的对象
document.getElementsByName(Name) //
获得指定Name值的对象
---------------------------------------------------------------------
images
集合(面中的图象)
a)
通过集合引用
document.images //
对应面上的<img>标签
document.images.length //
对应面?span lang="EN-US"><img>标签的个?span lang="EN-US">
document.images[0] //
W?span lang="EN-US">1?span lang="EN-US"><img>标签
document.images[i] //
W?span lang="EN-US">i-1?span lang="EN-US"><img>标签
b)
通过nane属性直接引?span lang="EN-US">
<img name="oImage">
document.images.oImage //document.images.name
属?span lang="EN-US">
c)
引用囄?span lang="EN-US">src属?span lang="EN-US">
document.images.oImage.src //document.images.name
属?span lang="EN-US">.src
d)
创徏一个图?span lang="EN-US">
var oImage
oImage = new Image()
document.images.oImage.src="/1.jpg"
//
同时在页面上建立一?span lang="EN-US"><img>标签与之对应可以显C?span lang="EN-US">
<html>
<img name=oImage>
<script language="javascript">
var oImage
oImage = new Image()
document.images.oImage.src="/1.jpg"
</script>
</html>
----------------------------------------------------------------------
forms
集合(面中的表单)
a)
通过集合引用
document.forms //
对应面上的<form>标签
document.forms.length //
对应面?span lang="EN-US"><form>标签的个?span lang="EN-US">
document.forms[0] //
W?span lang="EN-US">1?span lang="EN-US"><form>标签
document.forms[i] //
W?span lang="EN-US">i-1?span lang="EN-US"><form>标签
document.forms[i].length //
W?span lang="EN-US">i-1?span lang="EN-US"><form>中的控g?span lang="EN-US">
document.forms[i].elements[j] //
W?span lang="EN-US">i-1?span lang="EN-US"><form>中第j-1个控?span lang="EN-US">
b)
通过标签name属性直接引?span lang="EN-US">
<form name="Myform"><input name="myctrl"></form>
document.Myform.myctrl //document.
表单?span lang="EN-US">.控g?span lang="EN-US">
-----------------------------------------------------------------------
<html>
<!--Text
控g相关Script-->
<form name="Myform">
<input type="text" name="oText">
<input type="password" name="oPswd">
<form>
<script language="javascript">
//
获取文本密码框的?span lang="EN-US">
document.write(document.Myform.oText.value)
document.write(document.Myform.oPswd.value)
</script>
</html>
-----------------------------------------------------------------------
<html>
<!--Select
控g相关Script-->
<form name="Myform">
<select name="oSelect">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>
<script language="javascript">
//
遍历select控g?span lang="EN-US">option?span lang="EN-US">
var length
length=document.Myform.oSelect.length
for(i=0;i<length;i++)
document.write(document.Myform.oSelect[i].value)
</script>
<script language="javascript">
//
遍历optionƈ且判断某?span lang="EN-US">option是否被选中
for(i=0;i<document.Myform.oSelect.length;i++){
if(document.Myform.oSelect[i].selected!=true)
document.write(document.Myform.oSelect[i].value)
else
document.write("<font color=red>"+document.Myform.oSelect[i].value+"</font>")
}
</script>
<script language="javascript">
//
ҎSelectedIndex打印出选中?span lang="EN-US">option
//(0
?span lang="EN-US">document.Myform.oSelect.length-1)
i=document.Myform.oSelect.selectedIndex
document.write(document.Myform.oSelect[i].value)
</script>
<script language="javascript">
//
动态增?span lang="EN-US">select控g?span lang="EN-US">option?span lang="EN-US">
var oOption = document.createElement("OPTION");
oOption.text="4";
oOption.value="4";
document.Myform.oSelect.add(oOption);
</script>
<html>
-----------------------------------------------------------------------
<Div id="oDiv">Text</Div>
document.all.oDiv //
引用囑ֱoDiv
document.all.oDiv.style
document.all.oDiv.style.display="" //
囑ֱ讄为可?span lang="EN-US">
document.all.oDiv.style.display="none" //
囑ֱ讄为隐?span lang="EN-US">
/*document.all
表示document中所有对象的集合
只有ie支持此属性,因此也用来判断浏览器的种c?span lang="EN-US">*/
-----------------------------------------------------------------------
二、JDBCq接MySql方式
下面是用JDBCq接MySql的一个小的教E?br />
1、查N动程?
MySQL目前提供的java驱动E序为Connection/JQ可以从MySQL官方|站下蝲Qƈ扑ֈmysql-connector-java-3.0.15-ga-bin.jar文gQ此驱动E序为纯java驱动E序Q不需做其他配|?br />
2、动态指定classpath
如果需要执行时动态指定classpathQ就在执行时采用Qcp方式。否则将上面?jar文g加入到classpath环境变量中?br />
3、加载驱动程?/p>
try{ Class.forName(com.mysql.jdbc.Driver); System.out.println(Success loading Mysql Driver!); }catch(Exception e) { System.out.println(Error loading Mysql Driver!); e.printStackTrace(); }
4、设|连接的url
jdbcQmysqlQ?/localhost/databasename[?pa=va][Qpa=va]
三、以下列Z在用JDBC来连接Oracle数据库时可以使用的一些技?/b>
1、在客户端Y件开发中使用Thin驱动E序
在开发Java软g斚wQOracle的数据库提供了四U类型的驱动E序Q二U用于应用Y件、applets、servlets{客L软gQ另外二U用于数据库中的Java存储q程{服务器端Y件。在客户机端软g的开发中Q我们可以选择OCI驱动E序或Thin驱动E序。OCI驱动E序利用Java本地化接口(JNIQ,通过Oracle客户端Y件与数据库进行通讯。Thin驱动E序是纯Java驱动E序Q它直接与数据库q行通讯。ؓ了获得最高的性能QOracle在客L软g的开发中使用OCI驱动E序Q这g是正的。但我徏议用Thin驱动E序Q因为通过多次试发现Q在通常情况下, Thin驱动E序的性能都超q了OCI驱动E序?br />
2、关闭自动提交功能,提高pȝ性能
在第一ơ徏立与数据库的q接Ӟ在缺省情况下Q连接是在自动提交模式下的。ؓ了获得更好的性能Q可以通过调用带布值false参数的ConnectioncȝsetAutoCommit()Ҏ关闭自动提交功能Q如下所C:
conn.setAutoCommit(false);
值得注意的是Q一旦关闭了自动提交功能Q我们就需要通过调用Connectioncȝcommit()和rollback()Ҏ来h工的方式对事务进行管理?br />
3、在动态SQL或有旉限制的命令中使用Statement对象
在执行SQL命oӞ我们有二U选择Q可以用PreparedStatement对象Q也可以使用Statement对象。无论多次C用同一?SQL命oQPreparedStatement都只对它解析和编译一ơ。当使用Statement对象Ӟ每次执行一个SQL命oӞ都会对它q行解析和编译。这可能会你认为,使用PreparedStatement对象比用Statement对象的速度更快。然而,我进行的试表明Q在客户端Y件中Q情况ƈ非如此。因此,在有旉限制的SQL操作中,除非成批地处理SQL命oQ我们应当考虑使用Statement对象?br />
此外Q用Statement对象也得编写动态SQL命o更加单,因ؓ我们可以字W串q接在一P建立一个有效的SQL命o。因此,我认为,Statement对象可以使动态SQL命o的创建和执行变得更加单?br />
4、利用helper函数对动态SQL命oq行格式?
在创Z用Statement对象执行的动态SQL命oӞ我们需要处理一些格式化斚w的问题。例如,如果我们惛_Z个将名字O'Reilly插入表中的SQL命oQ则必须使用二个相连的?'”号替换O'Reilly中的?”号。完成这些工作的最好的Ҏ是创Z个完成替换操作的helperҎQ然后在q接字符串心服用公式表达一个SQL命oӞ使用创徏的helperҎ。与此类似的是,我们可以让helperҎ接受一个Date型的|然后让它输出ZOracle的to_date()函数的字W串表达式?br />
5、利用PreparedStatement对象提高数据库的M效率
在用PreparedStatement对象执行SQL命oӞ命o被数据库q行解析和编译,然后被放到命令缓冲区。然后,每当执行同一?PreparedStatement对象Ӟ它就会被再解析一ơ,但不会被再次~译。在~冲Z可以发现预编译的命oQƈ且可以重C用。在有大量用L企业U应用Y件中Q经怼重复执行相同的SQL命oQ用PreparedStatement对象带来的编译次数的减少能够提高数据库的M性能。如果不是在客户端创建、预备、执行PreparedStatementd需要的旉长于StatementdQ我会徏议在除动态SQL命o之外的所有情况下使用PreparedStatement对象?br />
6、在成批处理重复的插入或更新操作中用PreparedStatement对象
如果成批地处理插入和更新操作Q就能够显著地减它们所需要的旉。Oracle提供的Statement?CallableStatementq不真正地支持批处理Q只有PreparedStatement对象才真正地支持批处理。我们可以?addBatch()和executeBatch()Ҏ选择标准的JDBC批处理,或者通过利用PreparedStatement对象?setExecuteBatch()Ҏ和标准的executeUpdate()Ҏ选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制Q可以以如下所C的方式调用setExecuteBatch()Q?br />
PreparedStatement pstmt3D null; try { ((OraclePreparedStatement)pstmt).setExecuteBatch(30); ... pstmt.executeUpdate(); }调用setExecuteBatch()时指定的值是一个上限,当达到该值时Q就会自动地引发SQL命o执行Q标准的executeUpdate()Ҏ׃被作为批处理送到数据库中。我们可以通过调用PreparedStatementcȝsendBatch()Ҏ随时传输批处理Q务?br />
ORACLE 数据库备份技?br /> ORACLE数据库是一U大型关pd的数据库Q可以存贮达到存贮TB的数据,那么如何保证q些数据的安全尤其至关重要,我们?991q开始?ORACLE数据库,通过q些q的使用Q我们制定了一整套的ORACLE数据库的备䆾制度。现在把我们的备份制度介l给大家Q供大家参考?/p>
Q?Ҏ实际需要决定数据库的运行方?/b>
ORACLE数据库有两种q行方式Q一是归方式(ARCHIVELOGQ,归方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物;二是不归方?NOARCHIVELOG)Q恢复数据库到最q的回收炏V我们根据数据库的高可用性和用户可承受丢q工作量的多少Q把我们正式q行的数据库采用为归档方式;那些正在开发和调试的数据库采用不归档方式?/p>
Q如何改变数据库的运行方?/b>
Q?1在创建数据库时设|数据库的运行的方式
在创建数据库Ӟ作ؓ创徏数据库的一部分Q就军_了数据库初始的存方式。一般情况下为NOARCHIVELOG方式。当数据库创建好以后Q根据我们的需要把需要运行在归方式的数据库ҎARCHIVELOG方式?br />
Q?2改变不归方式ؓ为归方?/b>
关闭数据库,备䆾已有的数?br /> 改变数据库的q行方式是对数据库的重要改动Q所以要Ҏ据库做备份,对可能出现的问题作出保护?br /> 启动Instance ,Mount数据库但不打开数据库,来改变归方?br />
sqldba lmode=yQsvrmgrlQ?br /> sqldba>connect internal
sqldba>startup mount
sqldba>alter database archivelog;
使能自动存档
在初始化文ginit*.ora(一般放ORACLE根目录的下层目录dbs?加参敎ͼ
log_archive_start=true
指定存档的重做登录文件名和存攄位置
同样是在初始化文件init*.ora中加入下面的参数Q?br /> log_archive_format=%S.arc
log_archive_dest=/arch12/arch (arch12 是日志文件存攄目录)
关闭数据库,重新启动数据库,归档方式转换完成?/p>
Q回收制?/b>
Q?1Ҏ数据库的q行方式和可承受丢失的工作量来决定数据库的回收制度对于不归方式Q我们用的是ORACLE数据库的逻辑备䆾Export Q回收的制度是:一个月作一ơ全备䆾(x01.dmp)Q一周作一ơ篏U备?c*.dmp)Q一天一ơ增量备?I*.dmp)Q具体的是星期一到星期五作增量备份,星期六做累积备䆾或全备䆾Q每ơ做完备份后自动传到其它的机器上存储。这些备份都是自动执行的,后面l出E序文本?br />
对于归方式Q我们用的是ORCALE的物理备份:当数据库创徏好以后,做一ơ物理上的全备䆾Q^时在不关闭数据库的前提下Q一个星期对l常改变的数据文件做联机的数据库数据文g的物理备份;当数据库的结构发生改变,如:增加表空_加数据文件等Q如允许xQ正常关闭数据库Q重新做数据库全备䆾Q否则,备䆾控制文gQ备份数据文件照常。联机的日志文g我们是写在阵列上的,不用镜象和备份?/p>
Q?2回收的方?/b>
Q?2.1不归方?/b>
我们拿曙光AIX操作pȝZ,来讲解以下如何做自动备䆾Q?br />---- a.首先建UNIX用户 demo/demo
---- b.拯oracle用户下的 .profile ?demo 用户下,以保?demo 用户可以?Export命o
---- c.用root用户dQ编?/var/adm/cron/cron.allow 加入用户名demo,q样demo用户有权自动执行数据库备䆾的shellE序Q?br />---- d.创徏数据库备份程序,攑ֈ本用L下层目录bin下,q且q些文g要有可执行权文gzlbf1:(增量备䆾1Q星期一执行的程?
. /u11/demo/.profile exp system/manager inctype=INCREMENTAL file=i01.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put i01.dmp close bye ! 文gzlbf2:(增量备䆾2, 星期二执行的E序) . /u11/demo/.profile exp system/manager inctype=INCREMENTAL file=i02.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put i02.dmp close bye ! 文gzlbf3:(增量备䆾3, 星期三执行的E序) . /u11/demo/.profile exp system/manager inctype=INCREMENTAL file=i03.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put i03.dmp close bye ! 文gzlbf4:(增量备䆾4, 星期四执行的E序) . /u11/demo/.profile exp system/manager inctype=INCREMENTAL file=i04.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put i04.dmp close bye ! 文gzlbf5:(增量备䆾5, 星期五执行的E序) . /u11/demo/.profile exp system/manager inctype=INCREMENTAL file=i05.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put i05.dmp close bye ! 文gzlbf6:(增量备䆾6, 星期六执行的E序) . /u11/demo/.profile js=`ls c*.dmp|wc -l` if test = 0 then exp system/manager inctype=CUMULATIVE file=c01.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put c01.dmp close bye ! fi if test = 1 then exp system/manger inctype=CUMULATIVE file=c02.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put c02.dmp close bye ! fi if test = 2 then exp system/maneger inctype=CUMULATIVE file=c03.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put c03.dmp close bye ! fi if test = 3 then exp system/manager inctype=COMPLETE file=x01.dmp ftp -n< < ! open 10.10.10.40 user demo demo binary prompt cd backup40 put x01.dmp close bye ! rm c*.dmp fi ---- e.在demo 用户下徏一个文Ӟ假如?cron.demo,文g内容如下 59 22 * * 1 bin/zlbf1 59 22 * * 2 bin/zlbf2 59 22 * * 3 bin/zlbf3 59 22 * * 4 bin/zlbf4 59 22 * * 5 bin/zlbf5 59 22 * * 6 bin/zlbf6
---- f.在demo用户下执行下面的命oQ?br />crontab cron.demo 执行的结果放?br />/var/spool/cron/crontabs/demo文g?/p>
---- g.重新启动cron q程Q命令:kill -1 q程?br />---- h.执行l果攑֜本用L邮g?br />---- i.查看l果是否执行Q请?/var/adm/cron/log文g
Q?2.2归档方式
---- a. 扑ֈ要回收的数据文g、联机重做登录文件、控制文件和参数文g
---- b. 正常关闭数据库,作一ơ全回收(用操作系l的TAR命oQ可以写成shellE序)Q然后打开数据库供正常使用,shellE序如下Q?br />tar cvf /dev/rmt/ctape2 /u1/oracle/dbs/ctrl1ora7.ctl
/u1/oracle/dbs/ctrl2ora7.ctl
/u1/oracle/dbs/ctrl3ora7.ctl
/u1/oracle/dbs/systora7.dbf
/u1/oracle/dbs/rbsora7.dbf
/u1/oracle/dbs/tempora7.dbf
/u1/oracle/dbs/toolora7.dbf
/u1/oracle/dbs/usrora7.dbf
/ls1/ls1.dbf
/u1/oracle/dbs/log1ora7.dbf
/u1/oracle/dbs/log2ora7.dbf
/u1/oracle/dbs/log3ora7.dbf
---- ? l常作联机的表空间和数据文g的部分回?br />首先标记联机表空间回收的开?br />alter tablespace 表空间名 begin backup;
用操作系l命令备份数据文?br />最后标记联机的表空间回收结?br />alter tablespace 表空间名 end backup
---- 多个表空间可以一起做标记Q备份做标记的所有数据文件后Q一h记结束?br />---- d. 当数据库l构发生改变后,要对它的控制文g做回?br />sqldba >alter database backup
controlfile to ’文件名?reuse;
数据库设计中?4个技?br />1. 原始单据与实体之间的关系
可以是一对一、一对多、多对多的关pR在一般情况下Q它们是一对一的关p:即一张原始单据对应且只对应一个实体。在Ҏ情况下,它们可能是一对多或多对一的关p,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明这U对应关pdQ对我们设计录入界面大有好处?br /> 〖例1〗:一份员工历资料,在h力资源信息系l中Q就对应三个基本表:员工基本情况表、社会关p表、工作简历表。这是“一张原始单证对应多个实体”的典型例子?br />
2. 主键与外?/b>
一般而言Q一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实? 可以定义主键Q也可以不定义主?因ؓ它无子孙), 但必要有外?因ؓ它有父亲)?br /> 主键与外键的设计Q在全局数据库的设计中,占有重要C。当全局数据库的设计完成以后Q有个美国数据库设计专家_“键Q到处都是键Q除了键之外Q什么也没有”,q就是他的数据库设计l验之谈Q也反映了他对信息系l核?数据模型)的高度抽象思想。因为:主键是实体的高度抽象Q主键与外键的配对,表示实体之间的连接?br />
3. 基本表的性质
基本表与中间表、时表不同Q因为它h如下四个Ҏ:
(1) 原子性。基本表中的字段是不可再分解的?br /> (2) 原始性。基本表中的记录是原始数据(基础数据Q的记录?br /> (3) 演绎性。由基本表与代码表中的数据,可以z出所有的输出数据?br /> (4) E_性。基本表的结构是相对E_的,表中的记录是要长期保存的?br /> 理解基本表的性质后,在设计数据库Ӟp基本表与中间表、时表区分开来?br />
4. 范式标准
基本表及其字D之间的关系, 应尽量满第三范式。但是,满W三范式的数据库设计Q往往不是最好的设计。ؓ了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余Q达CI间换时间的目的?br /> 〖例2〗:有一张存攑֕品的基本表,如表1所C。“金额”这个字D늚存在Q表明该表的设计不满第三范式,因ؓ“金额”可以由“单价”乘以“数量”得刎ͼ说明“金额”是冗余字段。但是,增加“金额”这个冗余字D,可以提高查询l计的速度Q这是以空间换旉的作法?br /> 在Rose 2002中,规定列有两种cdQ数据列和计列。“金额”这L列被UCؓ“计列”,而“单价”和“数量”这L列被UCؓ“数据列”?br /> ? 商品表的表结?br /> 商品名称商品型号单h数量金额
电视?29?2,500 40 100,000
5. 通俗地理解三个范?/b>
通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中Qؓ了更好地应用三个范式Q就必须通俗地理解三个范?通俗地理解是够用的理解,q不是最U学最准确的理?Q?br /> W一范式Q?NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
W二范式Q?NF是对记录的惟一性约束,要求记录有惟一标识Q即实体的惟一性;
W三范式Q?NF是对字段冗余性的U束Q即M字段不能由其他字D|生出来,它要求字D|有冗余?br /> 没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时Z提高q行效率Q就必须降低范式标准Q适当保留冗余数据。具体做法是Q在概念数据模型设计旉守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字D,允许冗余?br />
6. 要善于识别与正确处理多对多的关系
若两个实体之间存在多对多的关p,则应消除q种关系。消除的办法是,在两者之间增加第三个实体。这P原来一个多对多的关p,现在变ؓ两个一对多的关pR要原来两个实体的属性合理地分配C个实体中厅R这里的W三个实体,实质上是一个较复杂的关p,它对应一张基本表。一般来Ԍ数据库设计工具不能识别多对多的关p,但能处理多对多的关系?br /> 〖例3〗:在“图书馆信息pȝ”中Q“图书”是一个实体,“读者”也是一个实体。这两个实体之间的关p,是一个典型的多对多关p:一本图书在不同旉可以被多个读者借阅Q一个读者又可以借多本图书。ؓ此,要在二者之间增加第三个实体Q该实体取名为“借还书”,它的属性ؓQ借还旉、借还标志(0表示借书Q?表示q书)Q另外,它还应该有两个外?“图书”的主键Q“读者”的主键)Q它能与“图书”和 “读者”连接?br />
7. 主键PK的取值方?/b>
PK是供E序员用的表间q接工具Q可以是一无物理意义的数字? q序自动加1来实现。也可以是有物理意义的字D名或字D名的组合。不q前者比后者好。当PK是字D名的组合时Q徏议字D늚个数不要太多Q多了不但烦引占用空间大Q而且速度也慢?br />
8. 正确认识数据冗余
主键与外键在多表中的重复出现, 不属于数据冗余,q个概念必须清楚Q事实上有许多hq不清楚。非键字D늚重复出现, 才是数据冗余Q而且是一U低U冗余,即重复性的冗余。高U冗余不是字D늚重复出现Q而是字段的派生出现?br /> 〖例4〗:商品中的“单仗数量、金额”三个字D,“金额”就是由“单价”乘以“数量”派生出来的Q它是冗余Q而且是一U高U冗余。冗余的目的是ؓ了提高处理速度。只有低U冗余才会增加数据的不一致性,因ؓ同一数据Q可能从不同旉、地炏V角色上多次录入。因此,我们提倡高U冗?z性冗?Q反对低U冗?重复性冗??br />
9. E--R图没有标准答?/b>
信息pȝ的E--R图没有标准答案,因ؓ它的设计与画法不是惟一的,只要它覆盖了pȝ需求的业务范围和功能内容,是可行的。反之要修改E--R图。尽它没有惟一的标准答案,q不意味着可以随意设计。好的E—R囄标准是:l构清晰、关联简z、实体个数适中、属性分配合理、没有低U冗余?br />
10. 视图技术在数据库设计中很有?/b>
与基本表、代码表、中间表不同Q视图是一U虚表,它依赖数据源的实表而存在。视图是供程序员使用数据库的一个窗口,是基表数据综合的一UŞ? 是数据处理的一U方法,是用h据保密的一U手Dcؓ了进行复杂处理、提高运速度和节省存储空? 视图的定义深度一般不得超q三层。若三层视图仍不够用, 则应在视图上定义临时? 在时表上再定义视图。这样反复交q定? 视图的深度就不受限制了?br /> 对于某些与国家政沅R经、技术、军事和安全利益有关的信息系l,视图的作用更加重要。这些系l的基本表完成物理设计之后,立即在基本表上徏立第一层视图,q层视图的个数和l构Q与基本表的个数和结构是完全相同。ƈ且规定,所有的E序员,一律只准在视图上操作。只有数据库理员,带着多个人员共同掌握的“安全钥匙”,才能直接在基本表上操作。请读者想惻Iq是Z么?
11. 中间表、报表和临时?/b>
中间表是存放l计数据的表Q它是ؓ数据仓库、输出报表或查询l果而设计的Q有时它没有主键与外?数据仓库除外)。时表是程序员个h设计的,存放临时记录Qؓ个h所用。基表和中间表由DBAl护Q时表q序员自己用程序自动维护?br />
12. 完整性约束表现在三个斚w
域的完整性:用Check来实现约束,在数据库设计工具中,对字D늚取D围进行定义时Q有一个Check按钮Q通过它定义字D늚值城?br /> 参照完整性:用PK、FK、表U触发器来实现?br /> 用户定义完整性:它是一些业务规则,用存储过E和触发器来实现?br />
13. 防止数据库设计打补丁的方法是“三原则?/b>
(1) 一个数据库中表的个数越越好。只有表的个数少了,才能说明pȝ的E--R囑ְ而精Q去掉了重复的多余的实体QŞ成了对客观世界的高度抽象Q进行了pȝ的数据集成,防止了打补丁式的设计Q?br /> (2) 一个表中组合主键的字段个数少好。因Z键的作用Q一是徏主键索引Q二是做为子表的外键Q所以组合主键的字段个数了Q不仅节省了q行旉Q而且节省了烦引存储空_
(3) 一个表中的字段个数少好。只有字D늚个数了Q才能说明在pȝ中不存在数据重复Q且很少有数据冗余,更重要的是督促读者学会“列变行”,q样防止了子表中的字D|入到主表中去Q在主表中留下许多空余的字段。所谓“列变行”,是主表中的一部分内容拉出去,另外单独Z个子表。这个方法很单,有的人就是不习惯、不采纳、不执行?br /> 数据库设计的实用原则是:在数据冗余和处理速度之间扑ֈ合适的q炏V“三”是一个整体概念,l合观点Q不能孤立某一个原则。该原则是相对的Q不是绝对的。“三多”原则肯定是错误的。试惻I若覆盖系l同L功能Q一百个实体(׃千个属? 的E--R图,肯定比二百个实体(׃千个属? 的E--R图,要好得多?br /> 提倡“三”原则,是叫读者学会利用数据库设计技术进行系l的数据集成。数据集成的步骤是将文gpȝ集成为应用数据库Q将应用数据库集成ؓ主题数据库,主题数据库集成为全局l合数据库。集成的E度高Q数据共享性就强Q信息孤岛现象就少Q整个企业信息系l的全局E—R图中实体的个数、主键的个数、属性的个数׃少?br /> 提倡“三”原则的目的Q是防止读者利用打补丁技术,不断地对数据库进行增删改Q企业数据库变成了随意设计数据库表的“垃圑֠”,或数据库表的“大杂院”,最后造成数据库中的基本表、代码表、中间表、时表杂ؕ无章Q不计其敎ͼD企事业单位的信息pȝ无法l护而瘫痪?br /> “三多”原则Q何h都可以做刎ͼ该原则是“打补丁Ҏ”设计数据库的歪理学说。“三”原则是而精的原则,它要求有较高的数据库设计技巧与艺术Q不是Q何h都能做到的,因ؓ该原则是杜绝用“打补丁Ҏ”设计数据库的理Z据?br />
14. 提高数据库运行效率的办法
在给定的pȝg和系lY件条件下Q提高数据库pȝ的运行效率的办法是:
(1) 在数据库物理设计Ӟ降低范式Q增加冗? 用触发? 多用存储q程?br /> (2) 当计非常复杂、而且记录条数非常巨大?例如一千万?Q复杂计要先在数据库外面,以文件系l方式用C++语言计算处理完成之后Q最后才入库q加到表中去。这是电信计费系l设计的l验?br /> (3) 发现某个表的记录太多Q例如超q一千万条,则要对该表进行水q_剌Ӏ水q_割的做法是,以该表主键PK的某个gؓ界线Q将该表的记录水q_割ؓ两个表。若发现某个表的字段太多Q例如超q八十个Q则垂直分割该表Q将原来的一个表分解Z个表?br /> (4) Ҏ据库理pȝDBMSq行pȝ优化Q即优化各种pȝ参数Q如~冲Z数?br /> (5) 在用面向数据的SQL语言q行E序设计Ӟ量采取优化法?br /> MQ要提高数据库的q行效率Q必M数据库系l优化、数据库设计U优化、程序实现优化Q这三个层次上同时下功夫?br /> 上述十四个技巧,是许多h在大量的数据库分析与设计实践中,逐步ȝ出来的。对于这些经验的q用Q读者不能生帮硬套,死记背Q而要消化理解Q实事求是,灉|掌握。ƈ逐步做到Q在应用中发展,在发展中应用?br />特别声明以上内容是{?a >http://dev2dev.bea.com.cn/bbsdoc/20060112181.htmlQ如果您认ؓ该文档的内容늊了您的权益,请与整理?excelarthur.com.cn)联系Q与Dev2Dev|站无关?/p>
]]>
<ejb-jar> <weblogic-ejb-jar>
<display-name>EJB</display-name>
<enterprise-beans>
<session>
<ejb-name>TestEJB</ejb-name>
<home>testejb.ejb.TestEJBHome</home>
<remote>testejb.ejb.TestEJBRemote</remote>
<ejb-class>testejb.ejb.TestEJBBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>TestEJB</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
weblogic-ejb-jar.xml文g描述如下Q?BR><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "
<weblogic-enterprise-bean>
<ejb-name>TestEJB</ejb-name>
<jndi-name>TestEJB</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
q些配置我都写了Z么还有名字没有找到的异常呢?
请大家帮忙看看。谢谢! QQQ?6322591。MSNQrodney_luo@163.com
]]>