大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
代你写论文是不可能的,但我可以帮你分析一下这个问题。
成都创新互联专注于白云网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供白云营销型网站建设,白云网站制作、白云网页设计、白云网站官网定制、重庆小程序开发服务,打造白云网络公司原创品牌,更为您提供白云网站排名全网营销落地服务。
所谓新民主主义革命时期,是指1919-1949年。这个时期大致可以分为以下几个阶段,我们分别从这几个阶段来分析:
1 1949-1927年,对旧军阀的革命,一般称为大革命时期。这时候中国革命的主要敌人是旧军阀即北洋军阀。北洋军阀中的段祺瑞、吴佩孚、张作霖等人,看似中国土生土长的军阀,实际上都在帝国主义的控制和操纵下。
2 1927-1937年,大革命失败后,新军阀取代了旧军阀的地位,但新军阀仍然是帝国主义在华势力的代表。宁汉合流后的国民政府代表的是大地主打资产阶级利益,与帝国主义势力有着千丝万缕的联系。
3 1937-1935年,抗日战争时期。这是帝国主义与中华民族矛盾激化的时期。日本帝国主义大举侵华,中国人民结成了最广泛的爱国统一战线,共同抗日。
4 1945-1949年,解放战争时期。国民政府在美帝国主义的支持下破坏双十协定,坚持与人民为敌,中国共产党领导全国人民历时三年,取得了革命的胜利。
纵观整个新民主主义革命的历史,帝国主义、封建主义和官僚资本主义一直都是压在中国人民头上的三座大山,也一直是中国革命的必然对象。他们与中国人民的矛盾是不可调和的。由于封建主义和官僚资本主义都是帝国主义支持下统治中国的,因此把帝国主义和中华民族之间的矛盾认为是新民主主义时期的主要矛盾是有道理的。
摘 要:本论文主要讨论基于Client/Server数据完整性约束及其如何实施企业业务规则,并以SQLServer和PowerBuilder为例,介绍了数据完整性约束的实现技术。
关键词:Client/Server,数据完整性约束, 企业业务规则
DBMS已从早期的分散的一个个计算模型、网络/文件服务计算模型(针对文件)发展到现在的Client/Server计算模型(针对表中的一行)。Client/Server模型是非对等的(decoupled),客户发出服务请求,服务器作出响应,提供服务,即所谓的"请求驱动"。DB的Client/Server系统由DBServer、客户应用程序和网络组成。DBServer(即后端)负责有效地管理系统的资源,主要负责数据处理、并发控制、数据安全性、数据完整性和数据的备份和恢复等。客户应用程序(即前端)是系统中供用户与数据进行交互的部件,主要任务是提供交互式界面完成数据的录入、分析、检查和显示,向DBServer发出请求(SQL语句)并接收结果和错误信息。网络和通信软件是系统中客户和服务器之间数据传送的工具。
由于现在的数据库都是开放、多用户共享,因此维护数据库的正确性至关重要。数据库的完整性描述为数据库内容的完整性约束集合,其中完整性约束指数据库的一个状态是否合理,这是一组谓词。DBS检查数据的状态和状态转换,判定它们是否合理,是否应予接受。对一个数据库操作,要判定其是否符合完整性约束,全部断言无矛盾时才可以执行。完整性约束的形式化定义I=(O,P,A,R),其中O是完整性约束所涉及的数据对象集合,P是对象所满足的谓词,A是触发检查的条件,R是约束不满足时的反应动作[2]
一、 常见的数据完整性约束
根据分类角度不同,可将完整性约束分为如下几类:
·域、元组、集合完整性
·立即约束和推迟(到EOT)约束
·状态约束和状态演变约束。
·标准和定制的数据完整性约束
实际的系统中,一般将数据完整性约束分为标准的数据完整性约束和定制的数据完整性约束。标准的数据完整性约束是DBS已经实现的内部规则,包括域完整性、实体完整性和引用完整性。
域完整性(Field Integrity)保证一个数据库不包含无意义的或不合理的值,即保证表的某一列的任何值是该列域(即合法的数据集合)的成员。方法是限制列的数据类型、精度、范围、格式和长度等。
实体完整性(Entity Integrity)保证一个表中的每一行必须是唯一的(元组的唯一性)。为保证实体完整性,需指定一个表中的一列或一组列作为它的主键(Primary Key)。一个表中每行的主键必须确实含有一个值。一个表只能含有一个主键,如需要从其它列中除去重复的值,可以将一个或一组非主键列指定为一个候选键或唯一值键。
引用完整性(Reference Integrity)定义了一个关系数据库中不同的列和不同的表之间的关系(主键与外键)。要求一列或一组列中的值必须要与相关的一列或一组列中的值相匹配。从属的一列或一组列称之为外键(Foreign Key)。被引用的列或一组列称之为父键,父键必须是一个主键或唯一键。外键属于子表或明细表,父键属于父表或主表。若父键和外键属于同一表,则称之为自引用完整性。子表某行的外键必须与主表的主键相匹配,只要依赖于某主键的外键仍存在,主表中包含该主键的行就不能删除。
由于每个公司的数据库都有自己独特的业务规则集,所以系统必须有一种方式来实现定制的业务规则即定制的数据完整性约束。定制的数据完整性约束可由如下几种方法实施。
一种最原始的方法是将将每一个完整性约束编入要访问数据库的每个应用程序中,缺点是在每个相关的数据库应用程序中,开发者都要对相同的完整性规则进行编码、测试和排错。若某一规则变动,所有相关的应用程序都得改动。应用程序须向DBServer请求大量的数据,以执行该应用程序内部的数据完整性规则检查,这将阻塞网络。因而这是一种耗时、低性能的方法。
用户定义的数据类型(User-defined DataType)是由标准数据类型导出的新数据类型,它比标准的数据类型更准确地限定了数据输入的范围。
约束(Check)用于限制列的值域,在数据类型限制的基础上对输入的数据进一步进行限制。通过逻辑表达式来定义列的有效值。
缺省(Default) 定义了一个数值,当用户向数据表插入数据时,若某个域未给定值,系统自动将定义在该域上的缺省作为输入值,保证数据库数据的合理性。
规则(Rule) 是一个用来绑定域或用户定义数据类型的数据库对象,规则说明了哪些数据可以输入到域中。任何时刻,用户输入或修改数据(INSERT 或 UPDATE), DBMS都将检查该数据是否违反绑定在域上的规则。
存储过程(Stored Procedure)是由编译过的SQL语句、控制流语句、变量说明和赋值运算等组成的集合,由开发者创建并存储在数据字典(大部分DBMS叫系统表)中。我们可以通过存储过程中的语句来定义企业业务规则,特别对于复杂的表与表之间的饿关系,用存储过程来实现将变得相当容易。
触发器(Trigger)也是一个存储过程,该过程在插入、修改和删除等操作事前或事后由DBS自动激发(执行)。经常用于实现逻辑上相关的数据表之间的数据完整性和一致性。触发器非常适合于实施企业规则,如果某个输入违反了其中的某个企业规则,触发器可以显示相应错误并中止正在执行的数据库动作。
二、Client/Server模型下实施企业规则的准则
在Client/Server系统中,前端和后端都提供数据完整性约束。在前端可进行域完整性约束,并能定制业务规则。在后端几乎可以实现上述所列的所有的完整性约束。E.F.Codd在衡量关系数据库的十二条准则之第十条指出关系完整性约束条件必须用数据子语言定义并存储在数据字典中,而不是在应用程序中。这样,当完整性约束改变时,只要修改数据字典即可,完整性的改变一般不会在逻辑上影响应用程序的活动。
前端应用程序也可以进行某些完整性检查并实施企业规则,但是这些做法不能用于取代在数据库里的完整性约束定义。如果数据库设计者完全正确地说明了所有的约束和企业规则,则任何违反约束和规则的数据操作都会引起数据库错误。前端应用程序的任务是尽量减少产生数据库错误的可能性,只有从这个意义上说,前端应用程序才应当包含完整性检查和实施事务规则。当数据库没有完整性约束时,前端应用程序必须实施企业规则。
由此我们得出在实施企业规则时须遵循如下准则:
·集中在数据库中实施企业规则
·减少对数据库请求的次数,尽量减少返回结果
我们在实施企业规则时,应将所有的企业规则定义在数据字典中,应用程序在向数据库提交SQL语句之前尽量减少由用户引起数据库错误的可能性,使应用程序运行顺畅,对用户友好,开销少。
三、PowerBuilder/SQLServer数据完整性约束的实现技术
PowerBuilder是当今非常流行的前端开发工具,它提供了丰富的构件,能很方便地开发出界面友好、功能强大的应用程序。下面以功能强大的数据窗口为例,说明前端开发工具如何实现数据完整性约束,PowerBuilder的其它构件也提供类似实现完整性约束的方法。
◆利用列的编辑风格(Edit Style)限制列的长度、格式、值域等。PowerBuilder提供无线按钮(Radio Button)、检查框(Check Box)、下拉式数据窗口(DropDown DataWindow)、下拉式列表框(DropDown List)、编辑屏蔽(Edit Mask)和编辑(Edit)等编辑风格来检查列的数据类型。
◆利用列的有效性验证规则(Validation Rule)对输入数据进行限制。在Validation Rule对话框内,可输入规则定义(Rule Definition)和有效性规则出错信息(Validation Error Message)。
◆可在ItemChanged事件的Script程序里对输入数据进行进一步的有效性验证,若输入数据不能通过在ItemChanged事件里所设置的检查,则返回动作码1,拒绝输入数据。
◆当应用程序调用函数Update()更新数据库之前,触发UpdateStart事件。该事件是用于进行数据有效性验证的最后一次机会。若输入数据的有效性验证失败,则返回动作码1,拒绝数据更新。
◆针对那些数据库要求必须具备值的列(即那些具有NOT NULL约束的列),可将对应的数据窗口的列置为必备域(Required Field)。但是必备域的约束对用户来说并不友好,用户必须输入一个值,否则无法离开该列。一种替代的办法是在UpdateStart事件里检查列(在数据库中为NOT NULL列)的值是否为NULL。
◆利用自定义有效性验证函数进行常规的数据检查,有助于应用程序的标准化和简化。这些函数可以用在列的有效性验证规则,也可以用在Itemchanged事件的Script程序中。一般自定义有效性验证函数被设计成全局函数、返回布尔型结果。
在数据窗口的字段中输入数据,离开该字段,系统调用AcceptText()函数
用户调用AcceptText()函数
↓
执行字段的数据类型检查
↓合法
使用字段的有效性验证规则
激发ItemError事件
↓合法
执行ItemChanged事件(可设置有效性验证)
↓ 0
数据窗口接受该值
↓
用户调用Update()函数
↓
执行UpdateStart事件
不更新数据库
↓ 0
更新数据库
图一、PowerBuilder数据有效性验证的过程
值得注意的是有效性验证规则对数据窗口类的所有实例都通用,而在Itemchanged事件的Script程序里进行有效性验证与具体的数据窗口密切相关。有些有效性验证需进行数据库查询,若需要很高的系统代价,尽量避免使用。
SQLServer是一个多用户的RDBMS,它为复杂环境下有效地实现企业管理提供了一个强有力的Client/Server平台,是一种较理想的后端数据库服务器之一。微软和SYBASE公司都支持SQLServer产品。下面只以一个例子来说明在SQLServer中如何实现数据的域、实体、引用完整性约束。有关于如何用存储过程、触发器、规则和用户定义数据类型等实现数据完整性约束可参见有关资料。
CREATE TABLE pageruser
( stationid SMALLINT NOT NULL,
userid INT NOT NULL ,
frequentid SMALLINT NOT NULL,
machinecode INT NOT NULL,
name CHAR(10),
sex CHAR(1),
pagertypeid SMALLINT NOT NULL,
PRIMARY KEY(stationid,userid),
UNIQUE(frequentid,machinecode),
FOREIGN KEY(pagertypeid) REFERENCES pagertype,
CHECK(sex in('F','M'))
)
CREATE TABLE pagertype
( id SMALLINT,
typename CHAR(10),
note CHAR(30),
PRIMARY KEY(id)
)
以上定义了一个寻呼台DB的用户档案表pageruser和寻呼类型表pagertype,我们可以看出如何定义域完整性、主键、外键、唯一键、NOT NULL和CHECK约束。
四、结束语
本文讨论了分布计算环境下的数据完整性约束的概念及其实现技术。另外,基于Browser/Server计算模式下的应用系统同样需要考虑数据完整性约束的问题,且其与基于Client/Server的数据完整性约束相类似。
All) level “(全部)”级别 action 操作 active statement 活动语句 active voice 主动语态 ActiveX Data Objects ActiveX 数据对象 ActiveX Data Objects (Multidimensional) (ADO MD) ActiveX 数据对象(多维)(ADO MD) ad hoc connector name 特殊连接器名称 add-in 加载项 adjective phrasing 形容词句式 ADO ADO ADO MD ADO MD adverb 副词 aggregate function 聚合函数 aggregate query 聚合查询 aggregation 聚合 aggregation prefix 聚合前缀 aggregation wrapper 聚合包装 alert 警报 alias 别名 aliasing 命名别名 All member “全部”成员 American National Standards Institute (ANSI) 美国国家标准学会 (ANSI) Analysis server 分析服务器 ancestor 祖先 annotational property 批注属性 anonymous subscription 匿名订阅 ANSI ANSI ANSI to OEM conversion ANSI 到 OEM 转换 API API API server cursor API 服务器游标 application programming interface (API) 应用程序接口 (API) application role 应用程序角色 archive file 存档文件 article 项目 atomic 原子的 attribute 特性 authentication 身份验证 authorization 授权 automatic recovery 自动恢复 autonomy 独立 axis 轴 backup 备份 backup device 备份设备 backup file 备份文件 backup media 备份媒体 backup set 备份集 balanced hierarchy 均衡层次结构 base data type 基本数据类型 base table 基表 batch 批处理 bcp files bcp 文件 bcp utility bcp 实用工具 bigint data type bigint 数据类型 binary data type binary 数据类型 binary large object 二进制大对象 binding 绑定 bit data type bit 数据类型 bitwise operation 按位运算 BLOB BLOB blocks 块 Boolean 布尔型 browse mode 浏览模式 built-in functions 内置函数 business rules 业务规则 cache aging 高速缓存老化数据清除 calculated column 计算列 calculated field 计算字段 calculated member 计算所得成员 calculation condition 计算条件 calculation formula 计算公式 calculation pass 计算传递 calculation subcube 计算子多维数据集 call-level interface (CLI) 调用级接口 (CLI) candidate key 候选键 cascading delete 级联删除 cascading update 级联更新 case 事例 case key 事例键 case set 事例集 cell 单元 cellset 单元集 certificate 证书 change script 更改脚本 changing dimension 可更改维度 char data type char 数据类型 character format 字符格式 character set 字符集 CHECK constraints CHECK 约束 checkpoint 检查点 child 子代 classification 分类 clause 子句 CLI CLI client application 客户端应用程序 client cursor 客户端游标 clustered index 聚集索引 clustering 聚集 code page 代码页 collation 排序规则 column 列 column filter 列筛选 column-level collation 列级排序规则 column-level constraint 列级约束 COM COM command relationship 命令关系 commit 提交 comparative form 比较级 Component Object Model (COM) 组件对象模型 (COM) composite index 组合索引 composite key 组合键 computed column 计算列 COM-structured storage file COM 结构化存储文件 concatenation 串联 concurrency 并发 conjunction 连词 connection 连接 constant 常量 constraint 约束 continuation media 延续媒体 control-break report 控制中断报表 control-of-flow language 控制流语言 correlated subquery 相关子查询 CPU busy CPU 忙 crosstab query 交叉表查询 cube 多维数据集 cube file 多维数据集文件 cube role 多维数据集角色 cursor 游标 cursor data type cursor 数据类型 cursor library 游标库 custom rollup 自定义汇总 custom rule 自定义规则 data block 数据块 data connection 数据连接 Data Control Language (DCL) 数据控制语言 (DCL) data definition 数据定义 data definition language (DDL) 数据定义语言 (DDL) data dictionary 数据字典 data dictionary view 数据字典视图 data explosion 数据爆炸 data file 数据文件 data integrity 数据完整性 data lineage 数据沿袭 data manipulation language (DML) 数据操作语言 (DML) data mart 数据集市 data member 数据成员 data modification 数据修改 data pump 数据抽取 data scrubbing 数据清理 data source 数据源 data source name (DSN) 数据源名称 (DSN) data type 数据类型 data warehouse 数据仓库 database 数据库 database catalog 数据库目录 database diagram 数据关系图 database file 数据库文件 database language 数据库语言 database object 数据库对象 database owner 数据库所有者 database project 数据库工程 database role 数据库角色 database schema 数据库架构 database script 数据库脚本 data-definition query 数据定义查询 dataset 数据集 datetime data type datetime 数据类型 DBCS DBCS DCL DCL DDL DDL deadlock 死锁 decimal data type decimal 数据类型 decision support 决策支持 decision tree 决策树 declarative referential integrity (DRI) 声明引用完整性 (DRI) default 默认值 DEFAULT constraint 默认约束 default database 默认数据库 default instance 默认实例 default language 默认语言 default member 默认成员 default result set 默认结果集 Delete query 删除查询 delimiter 分隔符 denormalize 使非规范化 density 密度 deny 拒绝 dependencies 相关性 descendant 后代 destination object 目的对象 device 设备 dictionary entry 字典条目 differential database backup 差异数据库备份 dimension 维度 dimension hierarchy 维度层次结构 dimension table 维度表 direct connect 直接连接 direct object 直接对象 direct response mode 直接响应模式 dirty pages 脏页 dirty read 脏读 distribute 分发 distributed query 分布式查询 distribution database 分发数据库 distribution retention period 分发保持期 Distributor 分发服务器 DML DML domain 域 domain integrity 域完整性 double-byte character set (DBCS) 双字节字符集 (DBCS) DRI DRI drill down/drill up 深化/浅化 drill through 钻取 DSN DSN DSN-less connection 无 DSN 连接 DTS package DTS 包 DTS package template DTS 包模板 dump 转储 dump file 转储文件 dynamic cursor 动态游标 dynamic filter 动态筛选 dynamic locking 动态锁定 dynamic recovery 动态恢复 dynamic snapshot 动态快照 dynamic SQL statements 动态 SQL 语句 encrypted trigger 加密触发器 encryption 加密 English Query English Query English Query application English Query 应用程序 entity 实体 entity integrity 实体完整性 enumeration 枚举 equijoin 同等联接 error log 错误日志 error state number 错误状态号 escape character 转义符 exclusive lock 排它锁 explicit transaction 显式事务 expression 表达式 extended stored procedure 扩展存储过程 extent 扩展 fact 事实 fact table 事实数据表 Federal Information Processing Standard (FIPS) 联邦信息处理标准 (FIPS) fetch 提取 field 字段 field length 字段长度 field terminator 字段终止符 file 文件 file DSN 文件 DSN file storage type 文件存储类型 filegroup 文件组 fill factor 填充因子 filter 筛选 filtering 筛选 FIPS FIPS firehose cursor 流水游标 firehose cursors 流水游标 fixed database role 固定数据库角色 fixed server role 固定服务器角色 FK FK flattened interface 平展界面 flattened rowset 平展行集 float data type float 数据类型 foreign key (FK) 外键 (FK) foreign table 外表 forward-only cursor 只进游标 fragmentation 碎片 full outer join 完整外部联接 full-text catalog 全文目录 full-text enabling 全文启用 full-text index 全文索引 full-text query 全文查询 full-text service 全文服务 function 函数 global default 全局默认值 global properties 全局属性 global rule 全局规则 global subscriptions 全局订阅 global variable 全局变量 grant 授权 granularity 粒度 guest 来宾 heterogeneous data 异类数据 hierarchy 层次结构 HOLAP HOLAP homogeneous data 同类数据 hop 跃点 horizontal partitioning 水平分区 HTML HTML huge dimension 巨型维度 hybrid OLAP (HOLAP) 混合 OLAP (HOLAP) Hypertext Markup Language (HTML) 超文本标记语言 (HTML) identifier 标识符 identity column 标识列 identity property 标识属性 idle time 空闲时间 IEC IEC image data type image 数据类型 immediate updating 即时更新 immediate updating Subscribers 即时更新订阅服务器 immediate updating subscriptions 即时更新订阅 implicit transaction 隐性事务 implied permission 暗示性权限 incremental update 增量更新 index 索引 index ORing 索引或运算 index page 索引页 indirect object 间接宾语 information model 信息模型 initial media 初始化媒体 initial snapshot 初始化快照 inner join 内联接 input member 输入成员 input set 输入集 input source 输入源 insensitive cursor 不感知游标 Insert query 插入查询 Insert values query 插入值查询 instance 实例 int (integer) data type int (integer) 数据类型 integer 整型 integrated security 集成安全性 integrity constraint 完整性约束 intent lock 意向锁 interactive structured query language (ISQL) 交互式结构化查询语言 (ISQL) interface 接口 interface implication 接口含义 internal identifier 内部标识符 International Electrotechnical Commission (IEC) 国际电子技术委员会 (IEC) International Organization for Standardization (ISO) 国际标准化组织 (ISO) Internet-enabled 可支持 Internet 的 interprocess communication (IPC) 进程间通讯 (IPC) IPC IPC irregular form 不规则形式 irregular form type 不规则形式类型 irregular noun 不规则名词 irregular verb 不规则动词 ISO ISO isolation level 隔离级别 ISQL ISQL job 作业 join 联接 join column 联接列 join condition 联接条件 join field 联接字段 join filter 联接筛选 join operator 联接运算符 join path 联接路径 join table 联接表 junction table 连接表 kernel 核心 key 键 key column 键列 key range lock 键范围锁 keyset-driven cursor 键集驱动游标 keyword 关键字 large level 大级别 latency 滞后时间 LCID LCID leaf 叶 leaf level 叶级 leaf member 叶成员 left outer join 左向外联接 level 级别 level hierarchy 级别层次结构 library 库 linked cube 链接多维数据集 linked server 链接服务器 linked table 链接表 linking table 链接表 livelock 活锁 local cube 本地多维数据集 local Distributor 本地分发服务器 local group 本地组 local login identification 本地登录标识 local server 本地服务器 local subscription 本地订阅 local variable 局部变量 locale 区域设置 locale identifier (LCID) 区域设置标识符 (LCID) lock 锁 lock escalation 锁升级 log file 日志文件 logical name 逻辑名称 logical operators 逻辑运算符 logical_join 逻辑联接 login (account) 登录(帐户) login security mode 登录安全模式 lookup table 查找表
create table book
(
自动编号 int not null identity(1,1),
图书属性 tinyint primary key,
图书作者 char(8),
发布日期 datetime,
)
这样不就可以了吗
首先你要懂的sql语句,如果不懂,请先把这个学好再来学存储过程。
大部分存储过程的主要结构:
参数:即sql语句的条件,如select * from text where id=@id. @id就是参数。你在调用这个存储过程时就要传过来的数据。
复杂的存储过程结构:
触发器,游标.....这些就比较复杂点,通常是用来处理复杂的数据时使用。
触发器:简单点说就是一组存储过程一起执行。对了就过去,错了就返回。
其它的就要看你要怎么调用了,好好学吧
外键必须参考关键字,
你的关键字是两个字段,参考也必须是两个字段。