数据库表

2024-09-19

数据库表(精选11篇)

数据库表 篇1

1 引言

在进行B/S应用程序开发时, 为保证采集数据的完整与准确, 通常采用表单形式让用户填写, 作完整性检查后添加到数据库表中。如果采集的数据量很大, 项目又很多时, 也可通过Microsoft Excel进行数据采集, 应用程序通常会提供将Excel表的数据导入到数据库表中的功能。为确保导入数据完整准确, 通常都会对Excel中数据的填写格式、必填项目进行规定和说明, 并让用户下载预先编制的Excel模板, 让用户按规定和说明采集数据, 在客户端完成必要的校验之后再导入。

下面结合某单位职工情况表“xxzx1.xls”, 以“xxzx1.xls”为要导入的Excel文件。以Microsoft SQL Server2005下pubs数据库中的xxzx1表为导入目的表, 详细说明将Excel表数据导入MS SQL Server数据库表的一种有效技术实现方法。

为简单起见, 假设单位职工情况表在xxzx1.xls中的表名为缺省Sheet1, 表头栏为Sheet1的第一行, 如图1所示。pubs数据库中的xxzx1表结构如表1所示。

2 导入Excel数据的实现

2.1 创建上传Excel文件的页面

启动Visual Studio 2008, 点击“新建”→“网站”→“选择ASP.NET网站”→“输入网站位置 (语言选Visual C#) ”→点确定创建网站, 为简单起见, 假设该网站仅创建网页Default.aspx。

在Default.aspx上放置的页面控件及其属性设置如表2所示。

Default.aspx页面的部局如图2所示。

其中FileUpload1和Button1控件用于实现浏览和上传客户端的Excel文件, 并将Excel文的Sheet1表内容导入pubs数据库中的xxzx1表中。GridView1控件用于展示单位职工情况表“xxzx1.xls”的内容, 即导入到pubs数据库中的xxzx1表中的内容。

2.2 实现编码

打开Web.config配置文件, 加入下列语据:

为能够上传、连接、读取Excel数据, 需在Default.aspx.cs的开头加入下列命令:

在public partial class_Default:System.Web.UI.Page段中加入:

Excel数据上传导入功能安排在Button1_Click中实现, Excel数据导入时, 根据Excel表中的[序号]列值, 如果Excel表中的某行[序号]列值与pubs数据库中的xxzx1表中某行序号字段值相同, 就用Excel表该行内容更新pubs数据库中的xxzx1表中序号字段值相同行的内容, 并将更新行记数加1。如果Excel表中的某行[序号]列值与pubs数据库中的xxzx1表中任一行序号字段值都不相同, 说明该行是新行, 就插入到pubs数据库中的xxzx1表中, 并将插入行记数加1。Excel数据导入完成后, 在Default.aspx页面上展示导入的Excel数据, 并显示更新了多少行, 插入了多少新行。Default.aspx页面的Excel数据上传导入功能强大方便。其完整实现编码如下:

Default.aspx页面的运行如图3所示。

3 结语

上述示例在Windows XP+Windows Server 2003+MS SQL Server 2005下成功运行, 为软件技术人员在B/S应用开发中, 就如何处理大量Excel表数据导入数据库表提供了一种功能强大方便高效的技术实现方法, 供软件技术人员在B/S应用开发时参考。

摘要:介绍在B/S应用系统开发时, 将数据从Excel表导入到MS SQL Server2005数据库表的一种有效方法, 结合示例, 给出了导入功能的C#实现编码。

关键词:VS2008工具,Excel软件,MS SQL Server2005数据库,B/S架构,C#语言,数据导入

参考文献

[1]电脑编程技巧与维护杂志社.电脑编程技巧与维护2010年合订本.中国水利水电出版社, 2011.

数据库表 篇2

“tbl_name.frm”被锁定不能改变,

如何修复MySQL数据库表

不能找到文件“tbl_name.MYI”(Errcode :### )。

从表处理器的得到错误###(此时,错误135是一个例外)。

意外的文件结束。

记录文件被毁坏。

在这些情况下,你必须修复表。表的修复是一项非常困难的工作,很多情况下令人束手无策。然而,有一些常规的知道思想和过程,可以遵循它们来增加修正表的机会。通常,开始是可以用最快的修复方法,看看能否袖珍故障。如果发现不成功,可以逐步升级到更彻底的但更慢的修复方法。如果仍旧难以修复,就应该从备份中恢复了。在上一章已经详细介绍了这一部分内容。

简单安全的修复

为了修复一个表执行下列步骤:

首先,用--recover,-r选项修正表,并且用--quick,-q选项,来只根据索引文件的内容进行恢复。这样不接触数据文件来修复索引文件。(-r意味着“恢复模式”)

myisamchk -r -q tbl_nameisamchk -r -q tbl_name

如果问题仍旧存在,则忽略--quick选项,允许修复程序修改数据文件,因为这可能存在问题。下面的命令将从数据文件中删除不正确的记录和已被删除的记录并重建索引文件:

myisamchk -r tbl_nameisamchk -r tbl_name

如果前面的步骤失败,使用。安全恢复模式使用一个老的恢复方法,处理常规恢复模式不行的少数情况(但是更慢)。

myisamchk --safe-recover tbl_nameisamchk --safe-recover tbl_name

困难的修理

如果在索引文件的第一个16K块被破坏,或包含不正确的信息,或如果索引文件丢失,你只应该到这个阶段 ,在这种情况下,创建一个新的索引文件是必要的。按如下这样的步骤做:

定位到包含崩溃表的数据库目录中

把数据文件移更安全的地方。

使用表描述文件创建新的(空)数据和索引文件:

shell>mysql db_namemysql>DELETE FROM tbl_name;mysql>quit

上述语句将重新创建新的空表,并使用表的的描述文件tbl_name.frm重新生成新的数据和索引文件。

将老的数据文件拷贝到新创建的数据文件之中。(不要只是将老文件移回新文件之中;你要保留一个副本以防某些东西出错。)

在使用标准的修复方法。现在myisamchk -r -q应该工作了。(这不应该是一个无限循环)。

如果你拥有表的备份文件,那么一切过程就容易的多。从备份文件中可以恢复表的描述文件,然后在检查表,有可能还要继续使用标准的修复方法,应该纠可以解决问题了。

非常困难的修复

只有描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。

从一个备份恢复描述文件并且回到阶段2。你也可以恢复索引文件并且回到阶段1。对于后者,你应该用myisamchk -r启动。

如果因为某种原因,数据的备份文件丢失或者没有备份文件,但是你还记得建立表的CREATE TABLE语句,那么太好了,这样还是可以恢复索引文件:

定位到包含崩溃表的数据库目录中

把数据文件移更安全的地方。再把数据库目录中的对应的目录删去.。

调用mysql并发复CREATE TABLE语句建立该表。

退出mysql,将原始的数据文件和索引文件移回到数据库的目录中,替换刚才新建的文件。

数据库表 篇3

摘 要:体育器材管理一直是体育管理者比较棘手的问题,本文结合一个具体实例,详细阐述了利用Excel“数据透视表”管理体育器材的方法,对于体育器材管理者非常实用。

关键词:Excel;数据透视表;管理方法;体育器材

中图分类号:TP31 文献标识码:B 文章编号:1673-8454(2009)12-0068-02

在体育教学中,体育器材的管理是一个非常重要的环节。通常采用的管理方法是手写登记法。由于学校班级较多,同时会有五六个班级一起上体育课,借用器材的数量和种类就会增多,在这种情况下,手写登记法已不能满足管理者汇总和查阅的需求,往往导致管理者心里不是很清楚,不知道具体借出去多少。现在,利用Excel的“数据透视表”可以很好地解决这个问题,使器材借用情况清清楚楚。下面通过一个具体实例来说明它的使用方法。

首先,建立一个名为“体育器材借用情况登记表”的文件,如图1所示。接着建立一个以“系别”或“专业”进行统计的列表(即建立一个数据透视表),具体操作步骤如下:

1.在Excel的菜单栏中点选“数据”下拉菜单中的“数据透视表和图表报告项”,如图2所示。

系统弹出“数据透视表和数据透视图向导——3步骤之1”对话框。如图3所示。

在此对话框“请指定待分析数据的数据源类型”项目中,选择“Microsoft Excel数据清单或数据库”选项,在“所需创建的报表类型”项目中选择“数据透视表”选项,然后单击“下一步”按钮。

2.进入“数据透视表和数据透视图向导——3步骤之2”对话框,如图4所示,在“请键入或选定要建立数据透视表的数据源区域”项目中,设置选定区域为:“a1:d25”,然后单击“下一步”按钮。

3.进入“数据透视表和数据透视图向导——3步骤之3”对话框,如图5所示。

在此对话框中的“数据透视表显示位置”项目中,选中“现有工作表”选项,单击“版式”按钮,弹出的“数据透视表和数据透视图向导——版式”对话框,如图6所示。

定义数据透视表版式,步骤为:将“系别”字段拖入“页”栏目;将“专业”字段拖入“行”栏目;将“器材”字段拖入“列”栏目;将“数量”字段拖入“数据”栏目。

单击“确定”按钮,完成列表的布局设置,返回图5对话框。在图5对话框中,单击“完成”按钮,则建立新的数据透视表如图7所示。

4.在数据透视表中的各个项目中,均有一个下拉箭头,我们可以单击“系别”下的下拉箭头选择不同的“系别”进行显示,如图8所示,例如选取“计算机”系,单击“确定”按钮,出现如图9所示的显示效果。

5.我们还可以根据自己的实际需要,对“专业”、“器材”旁边的下拉菜单分别选取,只显示某个专业或某种器材的借用数据情况,使管理者对体育器材的使用情况了如指掌。

数据库表分区的方法 篇4

一、避免表连接查询中的物理竞争

现有2个数据库表 (orders和stock) , 其中orders有10个在不同磁盘上的数据库表分区, 这些分区分别有一个工作进程需与数据库表stock连接。在这种情况下, 每一个工作进程都需要访问数据库表orders, 然后扫描数据库表stock进行连接。当一个工作进程运行时, 其访问数据库表orders的数据是容易的, 但必须等待其他进程释放表stock资源时才能访问数据库表stock, 这就出现了I/O竞争。为了减少或者消除I/O竞争, 我们可分区数据库表stocks, 且让每一分区分布在不同的数据库设备上。

二、分区数据库表的命令

用于分区数据库表的常用命令包括:分区 (partition) 和未分区 (unpartition) 数据库表命令、将数据均衡分布到不同数据库设备上的删除和重新创建聚族索引 (clustered indexes) 的命令、将数据恢复到指定分区的并行块复制 (bcp) 命令、显示数据分布在不同分区或设备上有关信息的命令、更新分区统计信息的命令。

(一) 分区和未分区命令

改变数据库表分区的alter table命令格式为:

alter table table_name partition n

其中, table_name是被分区的数据库表的名称, n为数据库表分区的数目。

数据库表被分区之前拥有的数据保留在第一个分区, alter table命令分区一个数据库表并没有移动其原有的数据。为了创建用于并行查询的数据库表, 可通过创建聚族索引或者bcp方法重新分布分区数据库表的数据。使用未分区从句取消数据库表分区的alter table命令格式为:

alter table table_name unpartition

(二) 将数据均衡地分布到各分区的命令

将数据均衡地分布到各分区的方法包括创建聚族索引和bcp方法。使用create clustered index命令创建索引的命令格式为:

create clustered index index_name on table_name key_colume) on segment_name

其中, index_name是索引名称, table_name是数据库表名称, segment_name为片断 (segment) 名称。

通过对含有数据的分区数据库表创建索引可以将数据均衡地分布到数据库表各分区。

使用drop index命令删除索引的命令格式为:

drop index index_name

(三) 将数据恢复到指定分区的并行bcp命令

使用并行bcp命令能将数据恢复到指定的分区数据库表分区, 使用bcp时应注意以下问题。第一, 在执行bcp前, 数据库表必须在指定的数据库片断上且被分区 (此数据库片断跨越多个数据库设备从而使数据库表的不同分区在不同的数据库设备上) 。第二, 为了避免数据库表索引引起的意外, 应删除数据库表的各种索引。第三, 使用alter table…disable trigger命令保证bcp以快速的方式恢复数据。第四, 设置数据库操作“turn log on chkpt”为“ture”。第五, 可以利用操作系统命令将数据文件分解为多个独立的文件进行恢复, 也可以使用带有“-F” (开始行) 和“-L” (结束行) 标志的命令行恢复。

bcp命令的格式为:

bcp database._name..table_name:n in file_name

(四) 其他命令

为了显示数据库表每一分区中的数据页数和数据分布信息的概况, 我们可使用sp_helpartition命令, 其命令格式为:

sp_helpartition table_name

数据库服务器将数据库分区表中的各分区的数据页分布统计到一个统计表中, 该统计表的信息会因为以下情况而不准确:第一, 数据库表分区被取消后, 紧接着被重新分区;第二, 数据库表中大量的数据行被删除;第三, 数据库表中大量的数据行被更新且被更新的数据行不在原位置;第四, bcp命令将数据文件的数据拷贝到数据库表中;第五, 插入操作被频繁地回滚。

为了更新数据库表的分区统计信息, 可使用update partition statistics命令。其命令格式为:

update partition statistics table_name[partition_number]

其中, partition_number为分区号。

三、分区数据库表的步骤

分区数据库表的步骤取决于初始时数据库表的位置, 比如数据库表不存在、数据库表存在但不在指定位置、在指定位置数据库表的设备添加等情况。

(一) 数据库表不存在情况下的数据库表分区步骤

1. 在指定的数据库设备片断上创建数据库表。

2. 使用alter table命令创建数据库表的分区, 使每一分区位于不同数据库的设备使用bcp命令, 将数据均衡恢复到各分区。

3. 使用sp_helpartition命令检查数据分布情况, 必要时可创建数据库表聚族索引使得数据均衡分布。

4. 创建非聚族索引。

5. 使用dump命令备份数据库。

(二) 在指定位置数据库表的设备添加而进行的数据库表分区步骤

1. 使用sp_helpsegment查看数据库设备片断的使用情况。

2. 使用disk init创建新数据库设备, 使用alter database命令将数据库设备赋给数据库。

3. 使用sp_extendsegmentsegment_name, device_name扩展片断, 同时删除新数据库设备的系统和缺省片断。

4. 使用alter table命令删除数据库表的分区。

5. 使用alter table命令创建数据库表分区, 使分区数目为原分区数与新添设备数之和。

6. 如果数据库表原先已存在聚族索引, 则先使用drop index命令删除数据库表索引。

7. 在目标数据库片断上创建数据库表的聚族索引, 使数据库表的数据均衡地分布到目标数据库片断上的各数据库表分区。

数据库表 篇5

当系统使用频繁就会出现插入操作和删除操作同时进行的情况。这个时候插入事务会先将主表A放置独占锁,然后去访问子表B,而同时删除事务会对子表B放置独占锁,然后去访问主表A。插入事务会一直独占着A表,等待访问B表,删除事务也一直独占着B表等待访问A表,于是两个事务相互独占一个表,等待对方释放资源,这样就造成了死锁。

遇到这种情况我听说了三种做法:

1 取消AB两个表之间的外键关系,这样就可以在删除数据的时候就可以先删除主表A,然后删除子表B,让对这两个表操作的事务访问顺序一致,

2 删除A表数据之前,先使用一个事务将B表中相关外键指向另外A表中的另外一个数据(比如在A表中专门建一行数据,主键设置为0,永远不会对这行数据执行删除操作),这样就消除了要被删除的数据在AB两个表中的关系。然后就可以使用删除事务,先删除A表中的数据,再删除B表中的数据,以达到和插入事务表访问一致,避免死锁。

3 在外键关系中,将“删除规则”设置为“层叠”,这样删除事务只需要直接去删除主表A,而不需要对子表B进行操作。因为删除规则设置为层叠以后,删除主表中的数据,子表中所有外键关联的数据也同时删除了。

以上三个解决办法都是同事给出的建议,我也不知道到底该使用什么办法才好。

数据库表 篇6

一、职业技能鉴定工作的意义和作用

学校开展职业技能鉴定,推行国家职业资格证书制度,是国家人力资源能力建设的重要组成部分,是国家实施人才战略的主要举措。对学生开展职业技能培训鉴定,推行职业资格证书制度,以此推动学校的教学改革,提高学生实践能力和创新能力,拓宽就业空间的有效途径,也是学校适应新形势、确保高质量、办出新特色的重要举措。因此,职业技能鉴定在职业教育中起着重要的主导作用。

二、职业技能鉴定数据申报工作的思考

职业技能鉴定工作中常用的报名软件运行环境是Visual Foxpro(VFP),其数据库系统生成的文件以扩展名为DBF保存。一般各班主任、各科室收集的数据大多是Excel表。起初在录入数据过程中,按报名软件系统将每一个考生数据录入,数据录入的工作量大,容易出错。如果是多人合作输入,这时就应该按照预先分配、确定的顺序号“号码段”进行更改。为了管理方便,一般要求本批申报鉴定的考生录为一个“批次”,多人、多机分录的,要借助软件中“多批合并”菜单合并成一个“批次”,即一个数据库表,如果有考生放弃本次鉴定要删除一条或几条记录,或者有考生又想参加本次鉴定要增加一条或几条记录,这样数据只能在文件的末尾追加录入,一个班的考生报考号码就会分配不连续的几段。有没有更有效的办法呢?带着这个问题,笔者尝试用VFP的导入和导出功能,设计完成了Excel表和VFP表的数据互换。

三、具体设计思路与实现方法

1.VFP和Excel的优点

VFP是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性和灵活性,成为许多数据库系统设计者钟爱的开发平台,是计算机科学技术中发展最快的领域之一,广泛应用于各个领域中。它已成为计算机信息系统的重要组成部分。而Excel则是一个优秀的电子表格处理软件,在兼容性和灵活性、操作界面、公式运算、图表等方面有着独到的优势,成为广大办公应用人员常用的工具。上述两种软件在各自的应用领域均得到广泛的应用,由于两种软件共同具有良好的兼容性和灵活性,为两者相辅相成、取长补短奠定了良好的基础。

2.实现方法及操作步骤

(1)建VFP表模板 ,在报名软件系统中输入1~2位学生的基本信息(包含学生姓名、性别、身份证号、出生日期、鉴定工种),保存为VFP表模板后退出报名软件。

(2) 建Excel表模板,启动VisualFoxpro 6.0,将上述刚保存的VFP表模板导出成Excel表模板,实现VFP表和Excel表数据一致性。

(3) 填充Excel表模板,将收集的全部学生的基本信息数据复制到导出的Excel表模板中,然后对考生要增加或要删除的数据信息进行修改。最后用填充柄的方法填入考生报考号码,其它相同的数据如:工种代码、工种名称、级别、鉴定日期等可用填充柄的方法,也可用复制、粘贴的方法完成。

(4) 转移数据操作,启动VisualFoxpro 6.0,将修改好的Excel模板表导入成VFP表,在VisualFoxpro6.0命令窗口中,利用Replace命令、iif()和substr()函数通过身份证号得到出生日期和性别字段数据。利用Replace命令和Ltrim()函数删除报考号码前空字符串。

具体命令格式为

Replace all 性别 withiif(substr(身份证号,17,1)=”0”.or. substr(身份证号,17,1)=”2”.or. substr(身份证号,17,1)=”4”.or. substr(身份证号,17,1)=”6”.or. substr(身份证号,17,1)=”8”,”女” ,”男”)

或者 Replace all 性别 withiif(substr(身份证号,17,1)=”1”.or. substr(身份证号,17,1)=”3”.or. substr(身份证号,17,1)=”5”.or. substr(身份证号,17,1)=”7”.or. substr(身份证号,17,1)=”9”,” 男” ,” 女”)

Replace all 出生日期 with substr(身份证号,7,4)+”-”+ substr(身份证号,11,2)+”-” substr(身份证号,13,2)

Replaceall 报考号码withLtrim(报考号码)

这样整个申报鉴定的数据库表就完成了,其特点是申报鉴定的考生数据量越多,显示出录入考生的数据工作越快,解决了多人、多机分录的问题,考生报考号码段分配不连续的问题,考生数据增加和删除的问题。以前几天要完成的工作量,通过这种方法只要几个小时就能完成。大大地提高了申报鉴定数据的工作效率。

3.操作注意事项

(1)在创建Excel表模板时, Excel表中列与VFP表中字段之间要一一对应关系,这是非常关键的一步。

(2)在Excel表模板创建好后,要确定Excel表模板转移数据的范围,也就是Excel表模板中某一行数据对应VFP表中相应的某一条记录。如在导入时应选择“字段名所在的行为1”,选择“导入起始行为2”。

(3)转移数据时要处理两表中数据不完整和类型宽度不一致的问题。利用Replace命令、iif()和substr()函数通过身份证号求出出生日期和性别字段数据,利用Replace命令和Ltrim()函数删除报考号码前空字符串。

技能鉴定的数据申报要求必须具备数据的准确性和规范性。笔者在几年的数据报表工作中,处理过许多Excel表与VFP表之间的数据转移工作,运用以上设计思路与实现方法,能够实现“灵活、快捷、高效”的数据统计与报表目标。

参考文献

1.徐春香.Visual FoxPro6.0数据库管理与应用[M].北京:中国劳动社会保障出版社,2008.

2.高长铎.计算机应用基础[M].北京:人民邮电出版社,2009.

3.卞兴江.浅论VFP数据库技术与应用[J].电脑知识与技术,2008.

数据库表 篇7

在关系数据库中, 为了减少数据冗余, 一个庞大的实体及其联系的数据结构通常被设计为多个类别较为单一、属性较为集中的关系表。因此, 为了查询到较为完整的数据信息,经常需要对多张表进行连接操作。以SQL Server为例, 多张表之间的连接方式通常有以下几种:

(1) 内连接 : 表与表直接使用关系运算符 (如=、 >、 <、<>、 >=、 <=、! >和! <) 对指定字段进行比较 , 将两个或多个表中指定字段满足连接条件的记录集连接成一个新的的记录集。根据比较运算符不同, 内连接分为等值连接、自然连接和不等连接3种, 通常等值连接用得较为广泛。

(2) 外连接 : 外连接分为左连接 (LEFT JOIN) 、右连接(RIGHT JOIN) 和全连接 (FULL JOIN), 其中左连接确保左边的表没有记录遗漏, 右连接相反, 全连接则左右两张表中的数据都不能遗漏。当一张表中没有记录与另外一张表中的记录按照连接条件进行连接时, 不遗漏的记录对应的连接字段将呈现空值。

(3) 交叉连接 : 又称迪卡尔积 , 返回被连接的两个表的笛卡尔积, 可根据需要在连接时指定要不要进行条件约束。

2 案例数据库表结构说明

该案例数据库源自一个高职院校学生入学报到信息管理系统, 本案需要使用的表及其表结构如下:

(1) 学生信息表 , 关系模型为 : Students (Stu ID,Stu Name,Major ID,State, In Year,…), 各字段分别表示报名号、姓名、 专业编号、报到状态、入学年份等, 其中报到状态是 布尔值 ,true表示已报到 ; Major ID外键参照Majors (Major ID)。

(2) 专业信息表 , 关系模型为 : Majors (Major ID,Major-Name,Dep ID,…), 各字段分别表示专业号、专业名、 所属系别编号等, 其中Dep ID外键参照Departments (Dep ID)。

(3) 系别信息表 , 关系模型为 : Departments (Dep ID,De-Name,…), 各字段分别表示系别编号、系别名称等。

( 4) 课程信息 表 , 关系模型 为 : Courses ( Course ID,Course Name,…), 各字段分别表示课程编号、课程名称等。

( 5) 专业课程 表 , 关系模型 为 : Major Course ( Major ID,Course ID, In Year,… ), 各字段分别表示课程编号、课程名称、入 学年份等 。其中 , Major ID外键参照Majors ( Major ID) ;Course ID外键参照Courses ( Course ID) ; Major ID、In Year和Course ID共同决定了当前年度当前专业学生应该修学哪些课程。

3 表连接应用案例分析

(1) 内连接应用 : 查询数据库中学生的姓名及专业名。

1) 案例分析 : 查询结果要求包含姓名与专业名 , 从表结构分析, 该查询数据来源于Students表和Majors表, 其中Stu-dents表的Majoir ID指明了学生的专业信息来自于Majors表中的相同Major ID。因此, 在没有特殊要求的情况下, 只需要将两表按照Major ID字段值相等的原则连接起来即可。这种连接方式即是内连接的应用。

2) 参考SQL命令 :

说明: join前可显示加上inner关键字, 特指内连接, 不加时默认为该种方式。

3) 应用拓展 : 凡是需要从两个或更多表中查询符合某种关系的数据应用, 均可以使用内连接。又如: 查询学生姓名、其所属专业、所属系名等。

(2) 外连接应用 : 查询数据库各专业的报到人数。

1) 案例分析 : 查询结果是要求包含各专业名称及报到人数, 根据表结构, 各专业人数需从Students表的state状态值进行判定 (为true表示已报到), 并需要将该表与Majors表连接起来进行统计查询。该查询特别之处不在于它是做统计查询, 而在于统计结果要求体现完整的专业名称, 也即, 没有学生报到的专业也应当列举并显示人数为0。因此, 如果按照普通的内连接采用Major ID将两表连接起来, 将会丢失目前尚无学生报到的专业, 需要使用外连接强制将需要呈现的记录显示在结果集。很显然, 本例要求Majors表中的Major Name不得遗漏, 因此, 到底是左连接 (left join) 还是右连接 (rightjoin), 仅需看Majors表是放在前边还是后边进行连接操作。

2) 参考SQL命令 :

说明: 本连接使用right join, 确保右边的表Majors不遗漏记录, 这些记录在Students表中没连接上的对应字段将呈现为NULL, 可以通过isnull () 函数对该字段进行判定, 并将其转换为指定的数据 (如: 0) 显示。当然, 如果两表都不能有记录遗漏, 则需使用全外连接 (full join), 但本案指定了Major ID作为外键参照, 不存在学生所对应专业在Major表找不到的情况, 即无论怎么进行外连接, 都不会遗漏Students表中的记录。此外, on语句出现了第二个算数表达式, 该表达式与表连接没有直接关系, 仅仅做选择查询, 跟写在where后边一样。

3) 应用拓展 : 当需要从两个或更多表中查询符合某种关系的数据应用, 并且要保证join子句左边或右边的记录不能遗漏, 就应当使用外连接。如查询学生姓名、其 所属专业 、所属系名等。又如: 查询各系的报到人数等。

(3) 交叉连接应用 : 查询2014年入学的软件专业 (专业编码0581) 学生姓名及其应修学的全部课程。

1) 案例分析 : 查询结果包含指定入学年度指定专业的学生姓名及其所修全部课程, 从数据库表结构说明 (5) 可以看出, 如果从Students表过滤出符合条件的所有学生, 再从Ma-jor Course表过滤出所有符合条件的课程 , 再将过滤好的两表做笛卡尔积即可得到结果。该年度入学的A专业有多少课程(设为N门 ), 那么该年度A专业的学生 (设为M个 ) 就都应该修学这些课程, 查询结果应该为N×M条记录。

2) 参考SQL命令 :

说明: 本连接使用cross join, 确保符合连接条件两边的记录做笛卡尔积连接。

3) 应用拓展 : 交叉连接只在特殊需求下有用 , 当连接的两表记录较为庞大时, 其连接的运算效率将会很低。 其实 ,参照表结构说明 (5), 如果要查询所有专业指定年度学生的修学课程亦可直接使用内连接来完成, 只需把上述代码中的where条件用on写成两表连接的字段等值条件即可。

5 结语

在数据库表中模拟剪贴板功能探究 篇8

在编制《医疗器械招标采购系统》软件的过程中, 设计了如图1所示药品器械录入界面, 图中使用表格控件来录入数据。由于软件定制方要求在将新的药品器械数据录入数据表中共有五种类型, 将数据放入相应类型数据的后面再重新编号。这样就有了移动记录用类似Windows剪贴板功能的想法:能否选择记录, 使用剪贴板按钮将记录剪切到剪贴板中去, 再将记录指针定位到某一条数据记录后面粘贴来实现数据的移动?

2 设计思想

为了实现存放剪切的数据记录, 我设计的用临时表存放剪切数据记录, 窗体表单使用表单集, 将多个表单集成在一起, 实现直观显示剪贴板界面。

3 设计过程

3.1 进行数据库结构的设计

药品器械表DRUG结构为:

在表单初始化时动态生成剪贴板数据表, 代码如下:

3.2 窗体表单集的设计

1) 在如图3所示工程管理界面中选择“new…”按钮, 出现窗体设计界面后再选择“Create Form set”创建表单集。

2) 在表单集中添加如图1和图5窗体表单。

3) 对图1“剪切”按钮设计如下单击事件:

Sele Drug

n Answer=MESSAGEBOX ("真的要剪切吗?剪切后记录将存入剪贴板中", 4+32+256, "提醒用户")

4) 对图5“粘贴”按钮设计如下单击事件:

3.3 实际使用

数据库表 篇9

关键词:档案自定义,自定义表,数据库表结构,基本字段,AJAX

0 引 言

当前档案馆中, 文书档案、声像档案等具有较为固定的数据结构, 也容易制定相关的数据结构标准, 不过对于一些特殊的专题档案, 像婚姻档案、知青档案、出生证、工商、独生子女、解放前户籍等, 具有很强的专业性要求, 而且随着社会发展的需要, 会不断涌现出各种各样的专题档案, 而这些档案都是各个区县档案馆自己的特色档案, 难以确定统一的数据库表结构规范, 因此, 要求档案馆系统必须具有数据库表结构自定义功能。

本文结合前人研究的工作, 提出了一种利用AJAX技术在基于WEB的系统上进行数据库表结构自定义的设计方法, 它不刷新页面就可以进行数据库表结构自定义的设置, 并且不用修改著录查询模块功能就能自动显示自定义后的字段信息, 提高了系统使用的灵活性, 也便于软件产品的定制使用。

1 AJAX技术

AJAX是一种使用客户端脚本并能与Web服务器交互的客户端Web开发技术, 与主流的开发技术, 如PHP、J2EE和.NET相比, AJAX特点在于它是基于客户端的, 并能够以异步的方式与服务器交互。异步是指客户端的请求/响应和用户的动作是异步进行的, 客户端在等待服务器的响应时不必阻塞用户, 用户可以继续进行其他的行为。

AJAX使用XHTML和CSS标准化呈现, 使用DOM实现动态显示和交互, 使用XML和XSTL进行数据交换与处理, 使用XMLHttpRequest对象进行异步数据读取, 使用JavaScript绑定和处理所有数据。

本文AJAX引擎由一个Servlet类——AjaxServlet类封装, 通过调用AjaxUtil类, 解析ajax-config.xml中AJAX函数的配置信息, 来完成相应的功能。AjaxServlet在web.xml中的配置信息如下:

2 数据库表结构自定义设计原理

2.1 总体设计策略

(1) 系统管理员可以新增档案类型, 并设置该档案类型的数据库表结构, 并在数据库表结构自定义页面中设置结构字段项信息, 利用AJAX函数自动获取其信息, 在页面上显示。获取基本字段信息的函数代码为:

响应函数procColl (ajaxRequest) {}中通过下列代码来获取从后台数据库中查询到的信息。

(2) 将自定义设置的信息通过AJAX函数setDefineColumnXML () 保存到自定义属性存储表′define_table_sys′中, 同时创建档案表′arc_archives′;

(3) 数据库表结构自定义写入读取接口, 跟据自定义属性存储表中的信息, 完成自定义字段项的写入、读取操作。总体设计策略如图1所示。

2.2 自定义表结构属性信息存储表

设计了一个表, 表名′define_table_sys′, 主要用来存储自定义表结构属性信息, 其表结构如表1所示。当设置档案类型之后, 也就是说确定了结构名称之后, 这样就可以将自定义的字段项信息写入此表中, 表中满足特定条件的数据的记录数, 就是数据库表结构自定义后的字段项数目。

在读取这些字段项信息时, 将这些信息组织成XML字符串的形式, 然后在页面中利用AJAX技术进行解析, 解析函数为getDefineColumnXML () , 其组织形式如下:

2.3 自定义字段项显示利用设计

自定义字段项显示利用时, 首先确定用户常用的显示字段, 而这些信息是保存在数据库中的, 当页面显示时, 就只显示了用户自定义设置之后的字段信息, 显示利用设计的核心思想就是标题显示的列表′columns_vals′和要显示的数据列表′results′是一一对应的, 这样就可以利用循环来显示数据, 而不用确定要显示的字段信息具体值。自定义字段项显示利用设计流程如图2所示。

3 应用实例

3.1 自定义表结构设置

自定义表结构设置时, 首先选择档案类型结构模板, 将自动显示基本字段信息。通过单击右边“增加”按钮, 来增加一项自定义字段项, 设置其“字段中文名”、“字段英文名”、“字段类型”、“类型长度”、“显示长度”等属性信息, 确认信息无误后, 点击“保存”按钮, 可以将自定义设置的信息保存到数据库, 同时生成相应的档案表。设置示意如图3所示。

3.2 自定义表结构显示

自定义表结构显示功能在许多模块中都涉及到, 现在以数据著录模块为例来说明, 当点击“显示设置”按钮后, 可以设置本登录用户自定义的页面显示字段信息, 如果已经设置过, 可以不用设置, 进入页面后, 就是上次默认设置的效果。其查询后的数据显示效果如图4所示。

4 结 论

本文利用AJAX技术实现了在基于WEB的系统上进行数据库表结构自定义的功能, 给出了相应的设计方法和策略, 并在数字化档案馆系统中得到应用。实践表明, 能提高系统灵活性, 满足档案结构的可扩展性要求。

参考文献

[1]陈郑伟, 彭岩, 庄力可.基于Ajax的电子政务平台的研究与应用[J].计算机工程与应用, 2007, 43 (5) :196-199.

[2]韩承双, 再玲, 等.一种自定义工资项的柔性结构工资管理系统[J].河南科技大学学报:自然科学版, 2006, 27 (1) :42-44.

[3]涂家海.基于基础数据库自定义数据表的设计[J].襄樊职业技术学院学报, 2004, 3 (3) :10-12.

[4]付连续, 罗飞, 文绍纯.基于自定义功能的统一数据库的设计[J].微计算机应用, 2002 (2) :27.

数据库表 篇10

一、关于VLOOKUP函数

VLOOKUP函数是Excel中几个最重要的函数之一, 用于在表格或数组的首列查找指定的值, 由此返回表格数组当前行中其它列的值。其语法是:

VLOOKUP (lookup_value, table_array, col_index_num, range_lookup)

参数说明

Lookup_value为需要在数据表第一列中进行查找的数值。Lookup_value可以为数值、引用或文本字符串。

Table_array为需要在其中查找数据的数据表。使用对区域或区域名称的引用。

col_index_num为table_array中待返回的匹配值的列序号。col_index_num为1时, 返回table_array第一列的数值, col_index_num为2时, 返回table_array第二列的数值, 以此类推。如果col_index_num小于1, 函数VLOOKUP返回错误值#VALUE!;如果col_index_num大于table_array的列数, 函数VLOOKUP返回错误值#REF!。

Range_lookup为一逻辑值, 指明函数VLOOKUP查找时是精确匹配, 还是近似匹配。如果为false或0, 则返回精确匹配, 如果找不到, 则返回错误值#N/A。如果range_lookup为TRUE或1, 函数VLOOKUP将查找近似匹配值, 也就是说, 如果找不到精确匹配值, 则返回小于lookup_value的最大数值。

二、关于数据透视表

数据透视表用来从Excel数据列表、关系数据库文件或OLAP多维数据集中的特殊字段中总结信息的分析工具。它是一种交互式报表, 可以快速分类汇总和比较大量的数据, 并可以随时选择其中页、行和列中的不同元素, 以快速查看原数据的不同统计结果, 同时还可以随意显示和打印出你所感兴趣区域的明细数据。

三、数据透视表的用途

数据透视表是一种对大量数据快速汇总和建立交叉列表的交互式动态表格, 能帮助用户分析、组织数据。例如, 计算平均数、标准差、建立列联表、计算百分比, 建立新的数据子集等。建好数据透视表后, 可以对数据透视表重新安排, 以便从不同的角度查看数据。数据透视表的名字来源于它具有“透视”表格的能力。从大量看似无关的数据中寻找背后的联系, 从而将纷繁的数据转化为有价值的信息, 以供研究和决策所用。

四、VLOOKUP数据透视表在报表中的应用

某医院为了了解临床路径开展情况, 要求提供2014年医保和非医保人群3个病种出院人次、总费用及平均费用, 并打印各病种的对应病例的相关信息清单。3种病种分别是, 剖宫产 (手术编码是74.100%, %为1或2) , 输卵管妊娠 (ICD编码是O00.100) 。子宫肌瘤 (ICD编码是D 25.900) 以上3个病种均为手术病例。

五、明确需求

分析应用需求, 可以知道出院人次、总费用及平均费用为所需查询的数据项。住院时期、是否医保用户、临床路径病种是条件规定的分类项。与之相关的数据库字段有:住院号、姓名、医疗付款方式、入院时间、出院日期、出院科别、住院天数、主要诊断ICD、主要诊断描述、手术编码、手术描述、费用总计、西药等。都是病案首页录入的内容。

六、对病案首页数据的必要处理加工

目前的病案管理系统都具有查询和报表这一管理信息系统所必备的两大功能。然而, 其提供的查询功能很难满足工作中所有的查询需求, 若要求软件开发公司重新进行设计, 不仅要增加额外的设计费用, 而且也不能及时满足得到我们所需要的查询结果。若采用其提供的导出EXCEL文件的方式, 利用其的数据透视表和Vlookup函数功能。就可以得到我们的结果。

为了实现多条件的查询, 我们需要在导出的EXCEL文件中, 增加五个数据列, 对数据进行加工处理。具体五列的首行字段名分别定义为:“住院时期”、“是否医保用户”、“测算病种”、“是否临床路径”、“临床路径名称”。

七、创建病案首页数据透视表

数据透视表分为四个区域 (见图2) , 分别为页字段区、行字段区、列字段区、数据项区。并具有“数据透视表字段列表”和“数据透视表工具栏”。

八、基于数据透视表的病案首页数据分析:

8.1移动各字段到数据透视表的对应区域。按照查询要求, 将“数据透视表字段列表”中的“住院时期”字段, 将其拖入到数据透视表“页字段区”;点击“数据透视表字段列表”中的“是否医保用户”拖入到“行字段区”, 依次点击“数据透视表字段列表”中的“是否临床路径”和“测算病种”, 先后拖放到数据透视表“列字段区”。

而对于数据透视表的“数据项区”, 我们可以将“住院号”和“费用总计”两个字段拖入到其中。其中“费用总计2”则表示第二次拖入“费用总计”。

8.2设定各数据字段的统计方法。数据透视表的“数据项区”的三个字段“住院号”、“费用总计”、“费用总计2”默认的统计方法是求和。我们必须将“住院号”和“费用总计2”的统计方法修改为所要求的“出院人次”和“平均费用”。

具体方法是鼠标右键单击“求和项:住院号”, 出现“字段设置”子表单, 在弹出的对话框“汇总方式”框中选择“数据计数”, 并将名字改为“出院人次”。结果如图4所示。同理“求和项1:费用总计”设置为“住院总费用”, “求和项2:费用总计2”设置为“平均费用”。

8.3显示“2014年医保和非医保人群非临床路径三个病种出院人次、费用总计和平均费用”的查询结果。在“是否临床路径”中选择“否”, 在“测算病种”中同时选择“剖宫产、输卵管妊娠、子宫肌瘤”, 则可以显示如图3所示查询结果:

若我们选择“是否临床路径”的“是”, 选择病种也为同时选择以上3种病种。

8.4病案首页的数据透视表可以用来完成平均住院日、平均术前住院日、病人的治愈好转率、产科的围产情况统计表、手术情况分析、窒息情况分析、住院病人的年龄性别构成等等, 并可完成相关的透视图。

摘要:目的:分析VLOOKUP与数据透视表相结合实现病案首页数据的查询的方法技术。方法:通过从医院的病案首页数据中使用VLOOKUP函数提取到的临床路径病种信息, 说明使用数据透视表的步骤。结果:VLOOKUP和数据透视表相结合完成的数据查询技术可以使我们对字段从新的角度进行设置, 转换我们的分析数据的角度, 改变传统的统计方式, 从而可以更加高效、快捷、准确地分析数据。结论:VLOOKUP函数及数据透视表具有高效低付出的性能, 值得我们学习和掌握。

关键词:VLOOKUP函数,数据透视表,病案,数据,查询

参考文献

[1]赖伏虎, 向其国, 罗洁樱, 等.数据透视表在病案首页数据中的应用[J].医药世界, 2006 (52) .

[2]冯骏.VLOOKUP命令在工资计算中的应用[J].中国管理信息化, 2010 (14) .

数据库表 篇11

在许多MIS系统中,经常需要存储图像、电子文档、音频和视频等多媒体数据,这些数据的数据量很大,具有不规则性,通常被称作BLOB[1,2]。目前,大多数的DBMS产品都对BLOB数据提供了有力的支持,如Oracle中的Long Binary类型。

BLOB全称为Binary Large Objects,即大型的、不定的二进制对象,或者字符型数据,通常是文档(*.txt、*.doc)和图片(*.jpeg、*gif、*.bmp)。

设计中常见的问题是将数据存储在数据库中还是存储在文件系统中。存储在文件系统中的设计比较简单,只是把文件位置和文件名存放在数据库中,即在数据库表中设计一个Text类型的字段来存放这些信息。但缺点是显而易见的:一方面是在发布应用程序时所有的数据文件都要同时发布出去,并且还要注意路径的更新;另一方面数据有随时丢失、被查看、更改的危险[3]。因此在大多数情况下,最好把这些大型二进制数据与其他数据一起存在数据库中。主要有以下几个优点:首先,这种存放方式非常便于管理,BLOB数据存放在Oracle数据库,可以通过Oracle所提供的高效、安全的管理机制对BLOB数据进行存储和管理,避免了人工管理BLOB数据所带来的额外开销,此外,利用oracle数据库的备份恢复机制,也大大提高了BLOB数据存储的安全性。同时,BLOB字段可以根据实际内容的长度来占用存储空间,这一特点大大节省了信息存储空间的开销;其次,这种存放形式保证了数据的一致性,BLOB数据和其他数据的插入、更新、删除都在同一个事务中实现,这样就保证了文件与数据库之间的一致性;最后,这种存放形式,还可以实现数据的共享,便于网络开发。

2 工作原理

在C#中,对数据库中的BLOB数据进行操作之前,首先对其进行“初始化”操作,即将其置为空BLOB[4,5]。Oracle提供了EMP-TY_BLOB()函数对BLOB字段进行初始化操作。可以通过在INSERT语句中插入EMPTY_BLOB()函数,实现在一张表中插入一条新记录,并将BLOB字段初始化为空BLOB。初始化操作后,即可利用Oracle提供的DBMS_LOB函数包对BLOB数据进行读取和写入。

从数据库中读取BLOB数据时,使用Oracle.DataAccess.Types.OracleBlob类的存储使用OracleDataReader的GetOracleBlob()方法读取的定位器,然后使用Read()方法访问OracleBlob中的数据[6]。往数据库中写BLOB数据时,调用OracleDataReader的GetOracleBlobForUpdate()方法,将FOR UPDATE子句添加到SELECT语句,然后调用GetOracleBlob()方法取得BLOB,然后使用OracleBlob对象的Write()方法写入BLOB中,其工作原理如图1所示。

3 数据库的设计与连接配置

3.1 数据库设计

本文使用Oracle作为后台数据库系统。在Image数据库System方案中的Imgspace表空间建立ImgTable表来存储BLOB类型数据(图片、文档等),其结构如表1所示,其中,Product_id字段是图片所对应的产品信息表中的产品ID,其值通过相应页面的文本框productid.Text获得。

3.2 数据库连接配置

为了与数据库相连,需要在Web应用程序的配置文件web.config中配置数据库连接字符串:

由于Web页面获取连接字符串时需要使用的类ConfigurationSettings被包含在System.Configuration命名空间中,因此需要引入该命名空间。页面获取连接字符串的程序代码如下:

OracleClient是为Oracle特别定制的数据提供程序,用于访问Oracle数据源。但默认情况下,VS2005并不加载这个组件资源,因此,需要把System.Data.OracleClient.dll文件拷贝到项目解决方案的Bin文件夹下,然后引入此命名空间:Using System.Data.OracleClient。

4 应用程序设计与实现

4.1 写入BLOB数据的应用设计

写入BLOB类型的图片或文档数据时,可以通过VS2005提供的控件FileUpload的属性PostedFile.ContentLength获取上传文件字节大小,PostedFile.FileName获取上传文件文件名,PostedFile.ContentType获取上传文件类型[7]。然后使用Stream流对象读取上传文件数据到一个字节数组中,再将该字节数组数据存储到Oracle数据库中。具体步骤如下:

1)在ASPX页面布局:1个FileUpload控件,命名为FileUp;1个button按钮,命名为BtnSave(保存);1个Label控件,命名为FileLabel,用来显示上传文件的类型、大小和提示信息等。

2)在BtnSave_Click()事件中建立connection和command对象,使用ADO.NET访问数据库,用Stream流读取数据内容到pic数组,保存BLOB数据到Oracle数据库。

4.2 读取BLOB数据的应用设计

在数据库中,图片的保存方法与文本数据的保存方法不同。文本数据可以直接在数据库中查看,而图片数据是以二进制方式保存,查看时必须使用Stream流的Read方法读出图片数据,同时需要引入输入输出接口命名空间:System.IO[8]。为实现高效地访问数据,还需要编写自定义HTTP处理程序创建进程,并返回动态创建的内存流数据[9]。在项目中,使用Datalist控件绑定要即时显示的图片。

1)在需要显示图片的ASPX页面上布局一个Datalist控件,在模板列中添加一个img控件,以通用自定义HTTP请求处理程序Handler.ashx的继承类Handler封装HTTP请求信息,然后将图片ID绑定到img控件:

利用自定义HTTP处理程序类Handler处理HTTP Web请求。

2)由于内存流MemoryStream可有效降低应用程序对临时缓冲区和临时文件的需求,且与其他流相比,执行I/O操作的速度和效率高得多,因此可以利用Handler类的同步处理HTTP Web请求的函数ProcessRequ est,将图片数据用内存流MemoryStream读取显示出来。

5 小结

该文对关系数据库系统中的BLOB数据的存取策略进行了分析,并在.NET平台上使用C#编程实现了对Oracle数据库BLOB数据的存储和读取。该方法对声音、视频、文档、动画等其他BLOB类型数据同样适用,具有实际的参考价值和意义。

参考文献

[1]苏贵洋,黄穗.ASP.NET网络编程从基础到实践[M].北京:电子工业出版社,2006.

[2]Watson K,Nagel C.C#入门经典[M].3版.北京:清华大学出版社,2006.

[3]高晓兵.基于数据仓库的质量信息系统关键技术研究[D].西安:西北工业大学,2005.

[4]杨勇.数据库系统中BLOB对象的管理[J].微电子学与计算机,2006,23(7):148-150.

[5]杨光年,胡昌平,李方泉.Net企业应用架构技术探讨[J].淮海工学院学报:自然科学版,2008,17(2):31-34.

[6]孟现飞,李浩,孙统风.ADO.NET数据访问模型研究[J].微机发展,2003,13(6):94-98.

[7]杨勇.数据库系统中BLOB对象的管理[J].微电子学与计算机,2006,23(7):148-150.

[8]Kauffman J,Matsik B.Beginning ASP.NET Databases Using C#[M].[S.l.]:Wrox Press Ltd.,2002.

上一篇:商旅管理下一篇:农村金融市场发展