关系数据库体系结构与客户/服务器模式
关系数据库概述
关系数据库被定义为一种特殊的数据库 其中各个文件(称作关系)以平面文件(FlatFiles)或表的形式保持数据 表必须只含有一种记录类型 每个记录具有固定数目的字段 所有字段皆显示命名 表内的字段内容是各不相同的 不允许重复组(repeating groups) 不含有复制记录和预定的记录序列
在构造关系数据库时 必须特别注意关系的内容以及记录的各属性(字段)之间的内在联系
关系数据库上的基本 *** 作有选择 投影 连接和除法 选择建立一个含有与原始关系相同列数的新表 但是行只包括那些满足某些特写标准的原始关系行 投影 *** 作指定将被选择的列 因而形成的表只含有原始表列的一个子集 如果在投影 *** 作删除的列中有两个行不同 那么将只有一个记录被转入新的关系 连接 *** 作从两个或多个表中组合信息 两个表中的公用字段用作组合记录的基础字段 在公用字段中具有相等值的记录被连接在结果关系内
关系数据库实现的任务
实现关系数据库所涉及的任务分为三组
● 为DBMS定义数据库结构的任务
● 将数据库分配给物理存储介质的任务
● 建立数据库数据的任务
执行这些任务的方法取决于所采用的DBMS产品
各种不同的DBMS产品提供定义数据库结构的实用程序 这些实用程序使用一种专用的数据定义语言(DDL) 某些DBMS产品含有一些规定 一旦数据库已被定义到DBMS 即将该数据库分配到物理介质 根据应用程序处理的特点 数据可以定位在指定表上或定位在同一磁盘上 它有些DBMS产品偏重于数据库数据的建立
如上所述 数据库定义 存储分配以及数据建立过程都将取决于应用需求和所选择的特定DBMS产品的特征
关系数据 *** 作
为了开发数据库应用 需要使用一种语言来表达处理逻辑 关系数据 *** 作语言共有四类
● 关系代数 它是一种语言 提供一组远算符处理关系数据库中的关系
● 关系演算 它是一种语言 在该语言中用户指定一组来自关系数据库内数据 *** 作的结果
● 面向变换的语言 它们构成一类非过程语言 这类语言将表示为关系的输入数据变换成表示为单个关系的结果 SQL就是一种面向变换的语言
● 面向图形的系统 它们为用户提供一个关系结构的图形 如Borland的Paradox 和IBM公司的QBE(Query By Example)
用户可以采用多种方法与关系数据库进行联系
● 某些DBMS产品 包括有生成表格的工具并提供表格和报告的处理
● 通过查询语言提供一个接口 它们执行查询和更新功能 最重要的查询语言是SQL
● 与关系数据库联系的第三种方法是通过应用程序
扩展关系系统
众多的销售商都在积极扩展关系模型 这些扩展包括在关系表中存储复杂数据类型 存储过程 触发器以及二进制大对象(BLOB) 目前正在SQL 标准中考虑的SQL扩展将包括对对象的进一步支持 还有可能包括对用户定义数据类型及嵌套表的支持 向关系模型提供对象扩展的产品包括Sybase Informix Oracle和Borland
SQL:集成客户/服务器体系结构的基本链路
SQL为前面讨论的集成客户/服务器体系结构提供一条基本链路 目前美国国家标准局(ANSI)已认可SQL作为 *** 作数据库的正式工业标准 它是许多数据库管理系统(DBMS)产品都采用的数据存取语言
SQL允许用户在关系表数据上进行查询 建立新表 存取现有的远程表 *** 作数据 建立应用程序存取SQL数据 运行SQL语句 处理错误以及访问多个服务器 SQL数据库服务器是多用户关系数据库管理系统(DBMS)
SQL可以作为一个查询语言用于交互式使用或嵌入在应用程序中 在执行查询时 SQL接受一个或多个关系作为输入并产生一个关系作为输出 结果是一个表或平面文件 例如 一批不含有重复组的同一类型记录 在查询多个表时 SQL将这些表连接起来 SQL内还含有一些规定 用来向表中插入新数据 从表中删除数据或修改表中的数据
各种数据库服务器功能介绍
服务器数据管理包括若干软件 它们使用户可以访问网络中的任何节点以及确保多用户环境下的保密性 可恢复性和完整性 如前面所提到的 客户/服务器计算中的基本存取链路是SQL 它是一种高级非过程数据库语言 现在已开发出很多支持SQL 的后端服务器及DBMS 下面将描述这些产品
DB
DB 是一种由IBM公司开发的RDBMS 它使用SQL执行所有的数据库 *** 作 数据定义 数据存取 数据 *** 作以及授权功能 SQL语句由用户在一个客户机节点从键盘输入或嵌套在应用程序中
DB 的结构包括表 视图 表空间 索引 索引空间 数据库和存储组 这种RDBMS提供有允许用户动态建立和修改这些结构的工具 DB 还包括一些并行处理软件 以控制和限制干预 后备和恢复功能以及安全性保证等
并行处理通过锁来完成 当应用程序读数据库数据时 DB 在该数据上获取一个共享锁 允许其他应用程序读这个相同的数据 如果一个应用程序需要修改数据 那么DB 将一个互斥型锁放在该数据上 以阻止其它应用程序访问这个数据 DB 还提供一些关于锁的级别或锁的大小的任选项
DB 周期性地存储并检查所有数据库变化 所有驻留在系统缓冲区中的变化被写到数据库 并将一个变化的记录载入日志 以最近一次写到日志的变化起所建立的全部映像可用于完成系统故障的恢复 DB 包括一些用来从备份拷贝重新建立数据库的实用程序 这种实用程序含有一个选择项 允许用户只拷贝表空间中那些自最后一个备份后新被修改的页面
DB 还含有一些用来保护数据库的安全性规定
Borland对象成分体系结构(BOCA)
BOCA建立了一个既考虑开发工具又考虑数据库管理工具的客户/服务器体系结构 它将一级面向对象的工具 中间件和数据库服务器技术集中在一起提供客户/服务器的解决方案 该体系结构的组成部分有
先进的面向对象工具
Borland建立有广泛基础和紧密集成的面向对象的工具 这些工具充分利用了当前客户/ 服务器变革的优点 使用面向对象的方法学 建立了如下产品 Borland C++ Borland Delphi Paradox QuattroPro Visual dBase以及ObjectVision等
IDAPI
IDAPI(集成数据库应用程序设计接口)是Borland公司的SQL连通性解决方法 IDAPI使得开发人员能够以更高的效率建立数据库应用 允许用户在多种硬件和 *** 作系统平台以及网络环境下访问 以多种数据库格式存储的数据
InterBase
InterBase是一种分布式SQL数据库服务器 它支持每个数据库系统查询数据并将信息返回到其它任何一个InterBase服务器 InterBase 的可变体系结构代表了关系系统技术的第三次浪潮 可变引擎使得InterBase可以以最少的锁支持高效事务处理和决策支持事务处理
Borland公司的面向对象技术使得开发人员可以通过构造模块化的应用成分来建立复杂客户/服务器系统 这些模块化应用成分可以很容易地开发 测试 维护和增强 并可方便地装配到复杂的应用程序包中 此外Borland公司的可视化技术极大地提高了软件生产率
Informix SQL服务器系列
Informix公司推出了多种产品来满足特定的客户/服务器需求 它们包括Informix On Line Informix TP/XA Informix Star Informix On Line/Optical和Informix On Line工作站版
Informix On Line是一个联机事务处理(OLTP)数据库服务器 具有可用性 数据完整性以及多媒体数据管理能力 它建立有效的数据存储方法进行快速数据存取 缓冲数据于内存最低限度地使用磁盘存取 利用多处理器特征 允许不同处理器同时存取 以及自动确定是有效的搜索策略等 从而获得极高的性能
Informix TP/XA将On Line连接到事务处理管理程序 支持那些涉及多个数据库以及多个DBMS(由不同的销售商提供)的事务处理 在众多RDBMS中 Informix 第一个向依从于X/Open XA的事务处理管理程序提供了这种基于标准的接口
Informix STAR是一种用于On Line的分布式客户/服务器数据库产品 它提供最佳的性能 并且具有最小的网络通信量 站点透明性以及在不同站点 *** 作数据库的高度可靠性
Informix On Line/Optical是一种针对On Line用户的附加产品 这些用户想在他们的数据库系统上使用具有大容量存储能力的光学设备 On_Line/Optical允许用户在 写一次读多次 (WORM)的光学子系统上存储BLOB 用户必须拥有On Line/Optical On Line和一个光学子系统 那当然 如果没有这个On Line/Optical产品用户仍可以使用On LIne在磁存储设备上 *** 作BLOB
Informix On Line工作站版是On Line管理员手册的图形化版本 该工作站版具有与硬件版本相同的技术内容 但它是构造在一个窗口化 点一揿式(Point and Click)图形接口 采用关键字交叉查阅 这使得用户可以在某一窗口中存取所需信息的同时 在另一窗口中配置监视或调节On Line
lishixinzhi/Article/program/Delphi/201311/25138
云存储通常用于存放各种文件,类似于网盘,也等于U盘,概念上也有包含云数据库的意思;
云数据库用于存放一般电脑应用、手机APP、WEB、程序产生的数据,文件(尤其大文件)一般不通过数据库进行存储,云数据库即把本地物理服务器的数据库架设到云中,好处是方便快捷和安全(这里的安全是指存储的数据不易因为物理设备的损坏而丢失)
如果你有一个GB级别的视频文件,基本上无法放到数据库中,数据库的BLOB类型无特殊需要应避免使用。
1、交易记录2、阻止记录3、生成块记录4、删除数据记录。
区块链是不间断的经济交易数字分类帐,可以进行编程,以记录不仅是金融交易,还可以记录几乎所有有价值的东西。
区块链数据库是一个不可变记录的分散式分布式数据库,该数据库由计算机集群管理,但不属于任何单个实体,区块链存储为数据库或平面文件。
规范化为什么重要?目前很多的数据库由于种种原因还没有被规范化。本文中解释了其中一些原因,并用不同形式的范式(normal form)规范化了一个保险公司的理赔表。在这个过程中表的改变以及添加的一些附加表使数据库效率更高、错误更少、更容易维护。
数据库的规范化是优化表的结构和把数据组织到表中的实践,这样做数据才能更明确。规范化使你能够改变业务规则、需求和数据而不需要重新构造整个系统。
通过改变存储数据的方式--仅仅改变一丁点--并改变访问这些信息的程序,你就可以消除很多错误或垃圾数据出现的机会并减轻更新信息所必要的工作量。
公司现实存在的一个问题可以用一句话概括"我们一般都这样做"。我们一般像采用那种方式存储信息;我们一般允许人们把任何信息写入 ;我们一般采用那种方式编程。这通常是一件坏事,特别是对于年轻的和正在学习的公司来说。但是,当有新的系统和更好的完成任务的途径的时候,有时"采用那种方式任务完成得很好"这句话可能需要重新探讨和修改。规范化数据就是公司常常采用的有益的方式之一。
尽管对于COBOL程序(例如任何COBOL程序员都熟悉的文件布局)使用数据来说,把它们(数据)存储在关系数据库中与存储在平面文件中很相似,但是存储在平面文件中的方法并不是完成任务的必要的的途径,特别是由于你不了解两者之间的差别或害怕改变,而简单地把过去的观念带入到现在的方式。
注意:Dictionarycom是这样定义规范化的:"使其标准,特别使导致它符合某种标准或规范。"或"某种标准的强制接受"。Webopedia认为规范化是"在关系数据库设计中,组织数据以最小化冗余的过程。规范化通常包括把一个数据库分成两个或多个表并定义表之间的关系。其目标是隔离数据,这样添加、删除和修改某个字段只需要在一个表中进行,接着可以通过定义的关系传递到数据库中剩余的表中"。我更喜欢这个定义。
术语
在你了解现实世界中的一个保险公司的例子之前,你需要了解一些在讨论中会用到的术语。处理数据库的时候,特别是在处理规范化问题的时候,下面一部分讲到的一组新的关键字很有作用:
· 关系(Relation):从本质上说,关系是一个包含行和列的二维表或数组。
· 关联(Relationship):关联是不同表之间的数据彼此联系的方法。关联同时存在于形成不同实体的数据项之间和表实体本身之间,构成了数据库规范化的基本核心问题。数据关联有三种基本的类型,对它们有所了解是很重要的:
一对一(1:1):一对一关联意味着任何给定的每个(而不是大多数)实例严密地与另一个实体的一个实例对应。每个人只有一个正确的指纹就是的。每个电话号码准确地与一个付帐的独立私人客户对应(不是公司)。美国的每个人都只有一个社会保障号码。
一对多(1:M):一对多关联意味着给定实体的一个实例可以可以与另一个实体的零个实例、一个实例或者多个实例关联。每个人可能没有小孩、有一个小孩或多个小孩。每个人可能没有汽车、有一辆汽车或多辆汽车。
多对多(M:N):多对多关联(给定实体的零个、一个或多个实例与另一个实体的零个、一个或多个实例关联)是一种直接模拟很复杂的关联,它经常被分解为多个1:M关联。由于多个家庭混合在一起,一个或多个小孩可能没有父母亲(孤儿)、一个父母(单亲家庭),多于一个父母(两个仍然在一起或者离婚的两个父母、或者离婚了又复婚了的父母)。房屋或财产可以转让给一个人或多个人,而这些人(一个或多个)在遗嘱上可能又一个或多个房屋或财产。
· 属性(Attribute):属性被认为是程序或数据库中的某些组件的可以修改的特性或特征,它可以被设置为不同值或者关系或表中的列。
· Tuple:Tuple是关系数据库或非关系数据库中的排序了的一组值或值属性:关系中的一行。
· 删除异常:删除异常指由于其它数据故意的删除而导致的数据矛盾或未预料到的数据(信息)丢失。
· 插入异常:插入异常指由于数据的缺少或缺乏导致没有能力把信息添加到数据库。
· 更新异常:更新异常指由于数据冗余或者冗余数据的不完整更新造成的数据矛盾。
· 关系的分解:关系的分解指把一个关系分解成多个关系,从而使关系符合更高的范式。
· 数据冗余:数据冗余指数据库中没有必要的数据重复。
· 数据完整性:数据完整性指数据库中数据的一致性。保证数据完整性很重要,只有这样用户才知道他们依赖的数据是正确的、他们查询的结果以及程序才是精确的和符合期望的。
· 原子值:原子值是一个值,它既不是能被进一步拆分的一组值,也不是一个重复的组。每个列都有一个完整的值,但是只有一个值--这个值不能被分解为多个部分,它要么被数据库使用,要么被使用数据库的用户访问的信息。
· 参考完整性规则:参考完整性规则指存储在非空的外部健中的值必须是某种关系中的关键数据项。
· 外部健:外部健是一个关系中的一组属性(一个或多个列),它同时也是某种(相同的或其它的)关系中的主键。它是关系之间的逻辑链接。参考自己关系的外部健称为递归外部健。
· 功能依赖:功能依赖意味着一行中某个属性的值由该行中另一个属性的值决定。这通常出现在主键(使某行的信息片断)与该行的其它信息之间。城市和州的组合依赖于Zip(邮政)代码,即使给定的一个州中有很多Zip代码与某个城市关联。美国的每个合法的人员身份依赖于他的社会保障号码。
· 决定性:功能依赖左边的属性决定行中其它属性的值(Zip代码决定了城市和州;社会保障号码决定了人的身份;执照号码和州决定了汽车的拥有者)。
· 实体完整性规则:实体完整性规则指某一行的关键属性可能为空(如果你在某个城市就有一个Zip代码;如果你有一辆汽车就有一个执照号码)。
· 约束:约束是一种规则,它限定了数据库中的值。电话号码必须是数字的;美元数量必须是数字的;state必须是合法的州或省;country必须是合法的国家;日期不能是2月31号。
现在你已经知道了很多相关的术语了,我们可以看看相关术语中规范会的意义了。下面的例子并不是典型的雇员―经理―部门示例,也不是学生―教授―课程提供示例。我将演示一个假设的保险公司的数据库。数据库中的表比本示例中用到的要复杂得多,但是与人们遇到的比较相近。
图1显示了理赔(claim)表的非规范化定义。尽管在某个保险公司的数据库中的表比它多得多,但是这些表为我们提供了一些背景,通过它我们可以看到规范化和其分支。请记住每个章节中的示例都只有部分列,这样就简化了示例并使你轻易地看到发生变化的东西。
CLAIM_NUM、 OCCURANCE_NUM 、 CLAIM_STATUS、 ACCDNT_YR、 ACCDNT_DT、 REPORTED_DT、 ENTERED_DT、 CLAIM_DT1、 CLAIM_DT2、 CLAIM_DT3 、 CLAIM_DT4、 CLAIM_DT4 、 CLAIM_DT5 、 CLAIM_DT6 、 CLAIM_DT7、 CLAIM_DT8 、 CLAIM_DT9 、 CLAIM_DT10、 CLOSED_DT 、 DEATH_DT、 ASSIGNED_DT、 ADJSTER_CD 、ADJUSTER_NAME 、 AGENT_CD 、 AWARD_CD 、 CAUSE_CD 、 CAUSE_DESC、 LOCATION 、 SITE 、 COVERAGE_CD 、 COVERAGE_DESC、 DED_RECOV、 DEDUCTIBLE_REMAIN 、 PAID_1 、 RESERVED_1 、 PAID_2 、 RESERVED_2 、 PAID_3 、 RESERVED_3 、 PAID_4 、 RESERVED_4 、 PAID_5 、 RESERVED_5 、 PAID_6 、 RESERVED_6 、 PAID_7 、 RESERVED_7 、 PAID_8 、 RESERVED_8、 PAID_9 、 RESERVED_9 、 PAID_10 、 RESERVED_10 、 LEGAL_FLG、 KEY1、 KEY2、 KEY3、 KEY4、 KEY5、 KEY6、 KEY7、 KEY8、 KEY9、 KEY10、 SEVERITY_CD 、 POLICY_NUM 、 PAYMENT_NUM 、 SSN、 STATE、 ACTVY_DT、 ENTRY_DT、 ADMIN_CD、ADMIN_DESC、 REOPEN_DT、 INSURED_NAME、 INSURED_ADDRESS、 INSURED_PHONE、 INSURED_CITY、 INSURED_STATE、 INSURED_ZIP、 CLAIMANT_NAME、 CLAIMANT_ADDRESS、 CLAIMANT_CITY、 CLAIMANT_STATE、 CLAIMANT_ZIP、 CLAIMANT_PHONE、 SPECIAL_DT_1 、 SPECIAL_DT_2、 SPECIAL_DT_3、 SPECIAL_DT_4 、 SPECIAL_DT_5、 SPECIAL_DT_6 、 SPECIAL_DT_7 、SPECIAL_DT_8 、SPECIAL_DT_9 、 SPECIAL_DT_10 、 GROSS_PD、 POLICY_ID
SQL Server 2012 数据库是由两种文件类型组成的:数据文件和日志文件。
数据文件存储数据库中的数据和对象,如表、索引、视图和存储过程。日志文件记录对数据库中的数据进行的所有 *** 作,这些 *** 作可用于数据库恢复和事务处理。
数据文件和日志文件一起构成了数据库,并且在使用数据库进行读写 *** 作时都需要用到。数据文件存储数据库的数据和对象,而日志文件记录对数据库的 *** 作,并用于恢复数据库和事务处理。
以上就是关于DELPHI基础教程:Delphi客户服务器应用开发(一)[2]全部的内容,包括:DELPHI基础教程:Delphi客户服务器应用开发(一)[2]、云数据库和云存储有什么区别(云存储和云数据库的区别)、区块链数据库中可用的记录类型有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)