持续表什么限制

持续表什么限制,第1张

持续表的限制主要有:

1 持续表的列数有限,受限于数据库管理系统的设计,一般只能有1000列以内;

2 持续表的行数也有限,受限于数据库管理系统的设计,一般有数十万条到数百万条;

3 持续表的表的类型不能被改变,一旦创建成功后,表的类型就不能改变;

4 持续表不能设置自增列;

5 持续表不能使用一些特殊的数据类型,如BLOB、TEXT等;

6 持续表不能设置索引;

7 持续表不能使用触发器;

8 持续表不能创建外键;

9 持续表无法使用存储过程;

10 持续表不能实现分布式事务;

11 持续表不能支持多进程使用;

12 持续表不能完全利用批处理技术;

13 持续表不能使用事务处理技术;

14 持续表不能使用数据库视图;

15 持续表不能支持复杂的查询语句;

16 持续表不能实现数据库联接;

17 持续表不能实现数据库检索;

18 持续表不能与其他数据库系统进行交互。

1MySQL有四种BLOB类型:

·tinyblob:仅255个字符

·blob:最大限制到65K字节

·mediumblob:限制到16M字节

·longblob:可达4GB

2mybatis对应mysql blob的类型

byte[] imgbytes对应了mysql imgbytes blob类型

3将base64转成二进制的byte数组。直接就可存储到mysql中

SqlConnection con = new SqlConnection("Server=Darkover;uid=sa;pwd=Password1;database=northwind");

SqlDataAdapter da = new SqlDataAdapter("Select From MyImages", con);

SqlCommandBuilder MyCB = new SqlCommandBuilder(da);

DataSet ds = new DataSet("MyImages");

daMissingSchemaAction = MissingSchemaActionAddWithKey;

FileStream fs = new FileStream(@"C:\winnt\Gone FishingBMP", FileModeOpenOrCreate, FileAccessRead);

byte[] MyData= new byte[fsLength];

fsRead(MyData, 0, SystemConvertToInt32(fsLength));

fsClose();

daFill(ds,"MyImages");

DataRow myRow;

myRow=dsTables["MyImages"]NewRow();

myRow["Description"] = "This would be description text";

myRow["imgField"] = MyData;

dsTables["MyImages"]RowsAdd(myRow);

daUpdate(ds, "MyImages");

conClose();

注:转贴,未经测试

按照以下语句模板带入,即可把blob类型变为字符串类型,不再需要别的 *** 作。

create table test(id blob);

select count() as to_char from test;

MySQL:

是一个关系型数据库管理系统,由瑞典MySQL

AB

公司开发,目前属于 Oracle 旗下产品。MySQL

最流行的关系型数据库管理系统,在

WEB

应用方面MySQL是最好的

RDBMS

(Relational

Database

Management

System,关系数据库管理系统)

应用软件之一。

字符串:

主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似 字符数组,所以它每一位的单个元素都是可以提取的,这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入

数组。

BLOB字段与文本

Delphi BLOB字段中增加了大型文本的处理能力 可以在TBlobField和Strings中自由地交换数据

procedure TBlobField LoadFromStrings(Strings: TStrings)

var

BlobStream: TBlobStream;

begin

BlobStream := TBlobStream Create(Self bmWrite)

try

Strings SaveToStream(BlobStream)

finally

BlobStream Free;

end;

end;

procedure TBlobField SaveToStrings(Strings: TStrings)

var

BlobStream: TBlobStream;

begin

BlobStream := TBlobStream Create(Self bmRead)

try

Strings LoadFromStream(BlobStream)

finally

BlobStream Free;

end;

end;

BLOB字段与Stream对象

因为Delphi中 BLOB字段是通过BLOB流来访问的 所以可以很容易地在BLOB字段和Stream对象之间传递数据 为此 TBlobField对象提供了LoadFromStream和SaveToStream方法

procedure TBlobField LoadFromStream(Stream: TStream)

var

BlobStream: TBlobStream;

begin

BlobStream := TBlobStream Create(Self bmWrite)

try

BlobStream CopyFrom(Stream )

finally

BlobStream Free;

end;

end;

procedure TBlobField SaveToStream(Stream: TStream)

var

BlobStream: TBlobStream;

begin

BlobStream := TBlobStream Create(Self bmRead)

try

Stream CopyFrom(BlobStream )

finally

BlobStream Free;

end;

end;

存取嵌入在OleContainer对象中的OLE服务器的数据

对象链接和嵌入(Object Linking and Embedding 简称OLE) 是一组服务功能 它提供了一种用来源于不同应用程序的信息创建复合文档的强有力方法

通过把图像 图形 表格 声音 注解 文件和其它表示手段描述成对象 用它能在不同软件厂家提供的应用程序中更为容易地交换合成和处理数据它是应用程序的集成更为容易 OLE 支持直观编辑 用户不需切换到不同窗口就能在文档中直接对对象进行 *** 作 改进了 *** 作环境 用户不用再关注应用程序和 *** 作环境 只需关注于使用对象技术的数据和文件 便能完成全部工作

OLE已成为 *** 作系统功能上的一大标准 各大软商纷纷在开发工具中支持OLE 规范 Delphi 提供了OleContainer对象支持OLE窗户应用程序的开发

尽管通过OLE可以用来源于不同应用程序的信息创建复合文档 充分体现以任务 以文档为中心的思想 但是很难分解来自其它应用程序中的嵌入数据 以进行特殊的处理

例如 一套多媒体电子文档管理系统 系统需要数据库管理功能文档编辑功能 全文检索功能等 在文档编辑功能的实现上 如果能利用中文Word 或写字板之类的强大的编辑排版功能 就可以省却重新开发一个文档编辑的费用 使用具有直观编辑的OLE复合文档嵌入Word的DOC数据或RTF数据当然是最佳的选择 但问题在于全文检索系统要求能直接在文档中搜索关键字 因此要求将文档数据从OLE嵌入数据或文档中的本地数据中分离出来

Delphi 的OleContainer部件支持存储OLE对象数据 OLE对象数据包括两部分 OLE类描述信息和OLE服务器嵌入数据 一般说来 OLE服务器嵌入数据是以服务器支持的数据格式存储的 比方说 中文Word 的嵌入数据的格式就是Word 文档的格式 因此 要将文档数据从OLE 嵌入式文档中分离出来就是要访问第二部分数据

我们分析了Delphi 的OleContainer对象存取复合文档的程序 得到分离数据的方法

让我们来看一段OleContainer对象存储数据的程序

procedure TOleContainer SaveToStream(Stream: TStream)

var

DataHandle: HGlobal;

Buffer: Pointer;

Header: TStreamHeader;

R: TRect;

……

begin

……

try

……

if FOldStreamFormat then

begin

R := BoundsRect;

Header PartRect Left := R Left;

Header PartRect Top := R Top;

Header PartRect Right := R Right;

Header PartRect Bottom := R Bottom;

end else

begin

Header Signature := StreamSignature;

Header DrawAspect := FDrawAspect;

end;

Header DataSize := GlobalSize(DataHandle)

Stream WriteBuffer(Header SizeOf(Header))

Buffer := GlobalLock(DataHandle)

try

Stream WriteBuffer(Buffer^ Header DataSize)

finally

GlobalUnlock(DataHandle)

end;

finally

ReleaseObject(TempStorage)

ReleaseObject(TempLockBytes)

end;

end;

程序中 OleContainer对象执行了两次往流中写数据的 *** 作

Stream WriteBuffer(Header Size(Header))

Stream WriteBuffer(Buffer^ Header DataSize)

前一语句是写入OLE类描述信息 后一句语句是写入OLE服务器的嵌入数据 Header是TStreamHeader记录类型的变量 TStreamHeader记录的定义如下

TStreamHeader = record

case Integer of

: ( { 新版OLE对象 }

Signature: Integer;

DrawAspect: Integer;

DataSize: Integer)

: ( { 旧版OLE对象 }

PartRect: TSmallRect)

end;

因此读OLE服务器嵌入数据时 要跳过文件头的TStreamHeader记录 下面就是如何分离OLE服务器嵌入数据的程序

var

Stream : TMemoryStream;

FileStream : TFileStream;

begin

Stream := TMemoryStream Create;

FileStream := TFileStream Create( TEST DOC fmCreate) ;

with OleContainer do

if (State <> osEmpty) then

SaveToStream(Stream)

Stream Seek(Sizeof(TStreamHeader) )

FileStream CopyFrom(Stream Stream Size SizeOf(TStreamHeader))

Stream Free;

FileStream Free;

end;

OleContainer 包含的服务器对象是中文Word 程序中将分离出的数据存储在磁盘文件 TEST DOC 上 如果希望存储在不同的媒介上 可以使用相应的Stream对象 分离的方法类似 但是 这种方法并非对所有的OLE服务器数据都适用 如Windows 附件中的写字板(WordPad)就不行

返回目录 DELPHI基础教程

       编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLE G数据库开发优化指南

Java程序性能优化 让你的Java程序更快 更稳定

C嵌入式编程设计模式

Android游戏开发实践指南

lishixinzhi/Article/program/Delphi/201311/25091

使用PL/SQL从数据库中读取BLOB对象:

1首先,确认现有对象

SQL> col fdesc for a30

SQL> select fid,fname,fdesc from eygle_blob;

FID FNAME FDESC

------------------------ ------------------------------

1 ShaoLinjpg 少林寺-康熙手书

2 DaoYingjpg 倒映

2创建存储Directory

SQL> connect / as sysdba

Connected

SQL> create or replace directory BLOBDIR as 'D:oradataPic';

Directory created

SQL>

SQL> grant read,write on directory BLOBDIR to eygle;

Grant succeeded

SQL>

3创建存储过程

SQL> connect eygle/eygle

Connected

SQL>

SQL> CREATE OR REPLACE PROCEDURE eygle_dump_blob (piname varchar2,poname varchar2) IS

2 l_file UTL_FILEFILE_TYPE;

3 l_buffer RAW(32767);

4 l_amount BINARY_INTEGER := 32767;

5 l_pos INTEGER := 1;

6 l_blob BLOB;

7 l_blob_len INTEGER;

8 BEGIN

9 SELECT FPIC

10 INTO l_blob

11 FROM eygle_blob

12 WHERE FNAME = piname;

13

14 l_blob_len := DBMS_LOBGETLENGTH(l_blob);

15 l_file := UTL_FILEFOPEN('BLOBDIR',poname,'wb', 32767);

16

17 WHILE l_pos < l_blob_len LOOP

18 DBMS_LOBREAD (l_blob, l_amount, l_pos, l_buffer);

19 UTL_FILEPUT_RAW(l_file, l_buffer, TRUE);

20 l_pos := l_pos + l_amount;

21 END LOOP;

22

23 UTL_FILEFCLOSE(l_file);

24

25 EXCEPTION

26 WHEN OTHERS THEN

27 IF UTL_FILEIS_OPEN(l_file) THEN

28 UTL_FILEFCLOSE(l_file);

29 END IF;

30 RAISE;

31 END;

32 /

Procedure created

4最后取出数据

SQL> host ls -l d:oradataPic

total 7618

-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYingjpg

-rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLinjpg

SQL> exec eygle_dump_blob('ShaoLinjpg','01jpg')

PL/SQL procedure successfully completed

SQL> host ls -l d:oradataPic

total 11072

-rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01jpg

-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYingjpg

-rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLinjpg

SQL>

SQL> exec eygle_dump_blob('DaoYingjpg','02jpg')

PL/SQL procedure successfully completed

SQL> host ls -l d:oradataPic

total 15236

-rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01jpg

-rwxrwxrwa 1 Administrators SYSTEM 2131553 Apr 26 07:19 02jpg

-rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYingjpg

-rwxrwxrwa

text类型,其字符所占的字节数量跟字符集有关,比如utf8一个字符占三个字节。

其长度为字符数,就是保存字符的数量上限,65535就是最多65535个字符,不管是英文还是汉字。

blob类型,保存二进制数据,和字符集无关。

其长度为字节数,就是该字段保存文件的大小上限,65535就是保存文件的大小上限为65k。

数据库关系模型(数据库逻辑模型)是将数据概念模型转换为所使用的数据库管理系统(DBMS)支持的数据库逻辑结构,即将E-R图表示成关系数据库模式。数据库逻辑设计的结果不是唯一的,需利用规范化理论对数据库结构进行优化。

在关系模型中,数据库的逻辑结构是一张二维表。在数据库中,满足下列条件的二维表称为关系模型:

1)每列中的分量是类型相同的数据;

2)列的顺序可以是任意的;

3)行的顺序可以是任意的;

4)表中的分量是不可再分割的最小数据项,即表中不允许有子表;

5)表中的任意两行不能完全相同。

由此可见,有序的航空物探测量剖面数据不满足数据库关系模型条件第3条“行的顺序可以是任意的”,因此,不能简单地直接利用关系数据库(如Oracle,SQL Server,Sybase等)来管理剖面数据,需将数据在数据库中的存储方式改为大字段存储,确保不因数据库数据的增加和删除等 *** 作改变剖面数据有序特性。

一、大字段存储

(一)大字段存储技术

大字段LOB(Large Object)技术是Oracle专门用于存放处理大对象类型数据(如多媒体材料、影像资料、文档资料等)的数据管理技术。LOB包括内部的和外部的两种类型。内部LOB又分CLOB(字符型)、BLOB(二进制型)等3种数据类型,其数据存储在数据库中,并且支持事务 *** 作;外部LOB只有BFILE类型,其数据存储在 *** 作系统中,并且不支持事务 *** 作。LOB存放数据的长度最大可以达到4G字节,并且空值列(没有存放数据)不占空间(图2-6)。

图2-6 大字段存储示意图

由于外部LOB存放在 *** 作系统文件中,其安全性比内部LOB差一些。此外,大字段的存储支持事务 *** 作(批量提交和回滚等),而外部LOB不支持事务 *** 作。所以,航空物探测量剖面数据采用BLOB来存储。对于BLOB类型,如果数据量小于4000字节,数据库通常采用行内存储,而数据量大于4000字节采用行外存储。分析航空物探测量剖面数据,每个场值数据占4个字节(单精度),目前航磁数据采样率为10次/s,4000字节只能存储100 s数据;一般情况下航空物探测量每条测线飞行时间至少在10 min以上,每条测线数据量远远大于4000字节。所以,航空物探测量剖面数据采用行外存储方式,即大字段列指定“Disable Storage In Row”的存储参数。

由于大字段类型长度可变,最大可到4G。假设测线飞行时间为T,场值采样率为n次/s,测线场值数据量为4Tn,所以有4Tn≤4G。单条测线飞行时间T不会超过10 h(36000 s,航空物探测量1架次至少飞行1个往返2条测线),则场值的采样率n≤4G/4T=4×1024×1024×1024/4×36000次/s=29826次/s。采用大字段来存储测量数据,不仅能够减少数据表的记录数,提高查询效率,而且使得采样率的扩展不受限制。

(二)大字段存储技术应用

由于航空物探数据的数据量较大,现有的航磁测量数据按基准点方式(点存储)存储可达几亿个数据记录。若按磁场数据采样点存储方式(简称“场值存储方式”),则记录条数=(磁场数据采样率/坐标采样率)点存储方式的记录数,达几十亿条数据记录,且随着数据采样率的扩展、测点的加密,航空物探测量数据量随着时间的推移呈现快速增长之势。显然,如果采用常规的表结构来存储,势必造成数据的存储、管理、检索、浏览和提取都非常困难。另一方面,从航空物探专业应用需求来说,很少对单个测点的场值数据进行运算、分析等 *** 作,一般至少是对一条测线或以上测线,多数时候是需要对整个测区的场值数据进行化极、上延、正反演拟合等。

因此,在航空物探数据库表结构设计时,改变过去将基准点或场值点数据记录作为数据库最小管理对象的理念,采用了大字段存储技术,将测线作为数据库最小管理对象,将测线上的测量数据,如坐标数据和磁场、重力场数据分别存储在相应大字段中。在航空物探数据库建设中,大量采用数据库的大字段存储技术(详见《航空物探信息系统数据库结构设计》)。

(三)大字段存储效率

以航磁测量数据为例分析大字段存储技术优势。如果以场值存储方式存储测线数据,则每条记录包含架次号、测线号、基准号、地理坐标、投影坐标、磁场数据等,由于坐标数据采样率2次/s,磁场数据采样率10次/s,每5个磁场数据中,只有第1个磁场数据有坐标数据,其他4个坐标数据是内插出来,因此在测线记录中会产生大量冗余的数据坐标数据。采用点存储方式存储的测线数据记录数等于线上基准点数,若采用大字段存储方式,一条测线数据只存储为1条数据记录(图2-7),一般一条测线的测点数近万个,甚至更多,可见采用大字段存储大大减少测线数据存储记录数,提高数据的存取效率。

以某测区的两条航迹线为例,分别采用3种方式测试数据库的数据存储效率。磁场数据的采样率10次/s,坐标数据采样率2次/s,两条测线上共有基准点8801个。以场值方式存储先内插坐标信息,使得每个场值数据都拥有自己的坐标,然后存入数据库,共有数据记录44005条,写入数据库时间为5722 s,读取时间为103 s。第二种方式是以采样点的方式进行存储,共有8801条记录,写入数据库时间为947 s,读取需要091 s。第三种方式是以大字段的形式存储,只有2条记录,写入数据库103 s,读取时间为044 s(表2-2)。大字段数据存储记录数最少,存取效率最高。用整个测区数据测试效果更加明显。

表2-2 三种数据存储方法的存取效率比较

图2-7 大字段存储方式示意图

二、联合主键

主外键是关系型数据库建立表间关系的核心。在航空物探空间数据库建设过程中,要素类与要素类之间、要素类与对象类之间,以及对象类与对象类之间的关系的描述有3种形式,即拓扑关系——描述要素类与要素类之间结点、邻接和联通关系;叠加关系——描述要素类与要素类之间的相交、包含与分类关系;隶属关系——描述对象类与对象类之间的派生关系。前两种关系是采用空间数据模型建立的关系,而隶属关系是通过主键建立的对象类与对象类之间的关系。在建立一对一、一对多的表间关系时,需要在整个数据库表中确定具有唯一性的一个字段作为主键(主关键字)。

按照传统的航空物探数据的档案管理模式,每个项目分配一个自然数作为档案号,项目的所有资料均与此档案号相联系。勘查项目和科研项目的档案号是独立编号的,且均从001开始。加之人工管理的原因,存在1个项目2个档案号和2个项目1个档案号的情况,因此现行的档案号与项目之间的对应关系不具备唯一性,不能作为项目的唯一标识,即不能作为数据库表的主键。项目编号也不能作为数据库表的主键,项目编号也只是近十年的事,以前的项目没有项目编号。

综合考虑上述因素和项目具有分级、分类的特点,提出了构造项目唯一标识码(简称“项目标识”)的方法,并以此码作为数据库表的主键。

项目标识(主键):AGS+项目类别(2位)+项目起始年份(4位)+档案号(6位)

标识含义:AGS——航空物探的缩位代码;

项目类别——2位代码,01代表勘查项目、02代表科研项目;

起始年份——4位代码,项目开始年号;

档案号——6位代码,为了与传统的项目管理方式相衔接,后面3~4位是

项目档案管理模式下的档案号,不足部分补零。

以上15位编码是一级项目的项目标识,二级及其以下级别的项目标识是在上一级项目标识基础上扩展2位数字代码,中间用“”号隔开,数字为该级项目的序号。项目标识定义为30位编码,适用于六级以内的项目。例如:AGS022004000576080402,表示该项目为2004年开展的档案号为576的航空物探科研项目(一级项目)的第8课题(二级项目)第4子课题(三级项目)的第2专题。由此可见,该项目标识不仅仅是一个建立表间关系的关键字,同时还表达了不同级别项目间的隶属关系。在系统软件开发时,利用此关系生成了项目的分级树形目录,用户对项目的层次关系一目了然,便于项目查询。

数据库的主键一经确定,相应地需要确定联合主键的组成及其表达方式。所谓联合主键就是数据资料的唯一标识,在一个数据库表中选择2个或者2个以上的字段作为主键。由于航空物探数据绝大部分与项目标识有关,加之数据的种类较多,分类复杂,单凭主键确定数据库表中记录的唯一性,势必需要构建极其复杂的主键,这种方法既不利于主键的数据 *** 作,又会造成大量的数据冗余,合理地使用联合主键技术可以很好地解决资料唯一问题。以项目提交资料为例,提交的资料分为文字类资料、图件类资料和媒体类资料,我们对资料进行分类和编号,例如100代表文字资料(110——World文档,120——PDF文档),200代表图件资料(210——基础地理资料、220——基础地质资料,230——航迹线图,240——剖面图,250——等值线图等),300代表媒体资料(310——PPT文档,320——照片等),第1位(百位)表示该资料的类型,第2~3位表示该类资料的序号。

在数据库管理和项目资料查询时,采用项目标识与资料分类编号作为联合主键(图2-8),可以高效地实现复杂数据的查询。在整个数据库系统中多处(项目查询、数据提取等模块)使用联合主键技术。

图2-8 联合主键实例

三、信息标准化

为了实现数据共享,在航空物探数据库建模过程中,参考和引用了近百个国家信息化标准,编制了4个中心信息化标准和1个图件信息化工作指南。

(一)引用的国家信息化标准

1)地质矿产术语分类代码:地球物理勘查,地球化学勘查,大地构造学,工程地质学,结晶学及矿物学,矿床学,水文地质学,岩石学,地质学等。

2)国家基础信息数据分类与代码,国土基础信息数据分类与代码,地球物理勘查技术符号,地面重力测量规范,地面磁勘查技术规程,地面高精度磁测技术规程,大比例尺重力勘查规范,地理信息技术基本术语,地理点位置的纬度、经度和高程的标准表示法,地名分类与类别代码编制规则。

3)地球空间数据交换格式;数学数字地理底图数据交换格式;数字化地质图图层及属性文件格式。

(二)本系统建立的信息化标准

编写了“航空物探空间数据要素类和对象类划分标准”,“航空物探项目管理和资料管理分类代码标准”,“航空物探勘查分类代码标准”,“航空物探信息系统元数据标准”,“航空物探图件信息化工作指南”,以便与其他应用系统进行信息交换,实现数据库资料共享。

航空物探空间数据要素类和对象类划分标准:根据物探方法、数据处理过程以及推断解释方法和过程,把与GIS有关的数据划分为不同类型的要素类-对象类数据,按专业、比例尺、数据内容对要素类和对象类进行统一命名,使空间数据库中的每个要素类和对象类的命名具有唯一性,防止重名出现。规定要素类-对象类数据库表结构及数据项数值类型。

航空物探项目管理和资料管理分类代码标准:规定了航空物探项目管理和资料管理的相关内容,包括航空物探勘查项目和科研项目的项目立项、设计、实施、成果、评审、资料汇交等项目管理的全过程中的内容,以及项目成果资料和收集资料的归档、发送、销毁、借阅等资料管理与服务过程中的内容和数据项代码。

航空物探勘查分类代码标准:在“地质矿产术语分类代码 地球物理勘查”(国家标准GB/T 964928—1998)增加了航磁、航重专业方面所涉及的数据采集、物性参数、方法手段、仪器设备、资料数据解释及成图图件等内容和数据项代码。

航空物探信息系统元数据标准:规定了航空物探空间数据管理与服务的元数据(数据的标识、内容、质量、状况及其他有关特征)的内容。

四、航迹线数据模型

(一)航迹线模型的结构

航空物探测量是依据测量比例尺在测区内布置测网(测线和切割线)。当飞机沿着设计的测线飞行测量时,航空物探数据收录系统按照一定的采样率采集采样点的地理位置、高度和各种地球物理场信息。采用属性数据分置的方法,将测线地理位置信息从航空物探测量数据中分离出来,形成航迹线要素类表,在此表中只存储与航迹线要素类有关的数据,如项目标识、测区编号、测线号、测线类型(用于区分测线、切割线、不同高度线、重复线等)、坐标、高度值等;将航迹线的对象类数据(磁场、重力场基础数据)分别以大字段形式存储在各自的二维表中,它们共享航迹线,解决了多源有序不同采样率的航空物探测量数据的数据存储问题,在满足要素类空间查询的同时,统一数据的存储方式(图2-9)。航迹线要素类隶属于测区要素类,它们之间为空间拓扑(包含)关系。测区从属于勘查项目,每个勘查项目至少有一个测区,它们之间为1对多关系。有关项目信息存放在项目概况信息对象类表中,各种表之间通过项目标识进行联接。

图2-9 航迹线数据模型结构

(二)航迹线的UML模型

统一建模语言UML(Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。UML是面向对象技术领域内占主导地位的标准建模语言,成为可视化建模语言的工业标准。在UML基础上,ESRI定义了空间数据库建模的ArcGIS包、类库和扩展原则。

图2-10 与航迹线有关的数据库表逻辑模型结构图

在确定航迹线数据模型后,以它为基础,使用UML完成与航迹的有关的项目概况信息、测区信息、原始数据等数据库表逻辑模型设计(图2-10)。

由UML模型生成Geodatabase模式时,模型中的每个类都对应生成一个要素类或对象类。类的属性映射为要素类或对象类的字段。基类属性中包含的字段,在继承类中不需重复创建。例如,每个类都包括项目标识等字段,可以创建一个包含公共属性的基类,其他类从该类继承公共的属性,而无需重复建基类中包含的属性。因为基类没有对应的要素类或对象类,所以将基类设置为抽象类型。要素类之间的关系采用依赖关系表示。

五、数据库逻辑模型

关系数据库的逻辑结构由一组关系模式组成,因而从概念结构到关系数据库逻辑结构的转换就是将概念设计中所得到的概念结构(ER图)转换成等价的UML关系模式(图2-11)。在UML模型图中,要素数据集用Geodatabase工作空间下的静态包表示。要素集包不能互相嵌套,为了容易组织,在生成物理模型后,在要素数据集包中自定义嵌套。要素数据集与空间参考有关,但是空间参考不能在UML中表达。要素类和二维表都是以类的形式创建的,区别是要素类继承Feature Class的属性,而二维表继承Object属性。为了表达每种元素的额外属性,比如设置字符型属性字段的字符串长度,设置要素类的几何类型(点、线或面)需要使用Geodatabase预定义的元素标记值。

图2-11 逻辑设计关系转换

基于航空物探数据的内在逻辑关系进行分析,使用统一建模语言(UML)构建数据实体对象间的关系类,定义了航空物探数据库的逻辑模型(图2-12)。

以上就是关于持续表什么限制全部的内容,包括:持续表什么限制、mysql使用blob存储base64格式文件、如何往数据库里面写blob数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10140828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存