`
maincoolbo
  • 浏览: 527623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

表该存放在哪里

阅读更多
  一、 表该存放在哪里?

  我们都知道,在ORACLE数据库中,使利用空间这个概念来管理表对象的。在数据库创建的时候,数据库中已经建立了一些表空间。那么当我们新建立表的时候,这个新表的位置该放在什么地方呢?这就好像吃饭时的坐的位置一样,是有讲究的。一般来说,我们在新建表的时候,至少要遵循如下建议:

  一是在数据库创建的时候,在数据库中已经有了一个SYSTEM的表空间。一般情况下,这个表空间中,只包含数据字典及Oracle系统对象。如果我们将我们的表建立在这个空间上的话,那是要降低数据库的性能的。所以,一般我们是不建议用户把表格建立在这个空间上。但是,若我们不只一个人维护数据库,如有八个人共同设计数据库系统时,如何才能保证其他用户不在SYSTEM表空间中建立数据库表格呢?最好的办法就是通过权限控制。如我们可以给每个数据库设计人员指定一个默认的表空间,让他们只能在这个表空间中建立表格。如此的话,就能防止他们在SYSTEM表空间中建立自己的数据表格,从而对数据库的运行性能产生不良影响。所以,若给每个用户设置默认表空间的话,那么用户在建立具体的表时,不用具体指定表空间了。

  二是我们在为某个应用设计数据库的时候,最好先对表的空间进行规划。一般情况下,不要把数据表随意的分散到不同的表空间中去。如我们在为一个ERP系统设计数据库的时候,若把采购部门相关的表跟销售部门相关的表放到两个不同的表空间中去,这是不明智的做法。这么处理的话,会降低某些数据库管理和维护操作的效率,如数据的备份与恢复操作;而且,也无法集中管理属于某个特定应用的数据。所以,我们一般建议,在规划数据库表空间的时候,把相同应用的表放在同一个表空间中去。如果要区分不同部门或者不同模块的表的话,我们可以在表的命名上动脑子。如我们在设计ERP系统的数据库中,可以根据其应用模块的不同,在前面加上前缀来进行识别。如跟系统基本配置相关的表,我们可以用AD为前缀;而跟销售部门相关的表,我们可以加上SA前缀等等。如此的话,这些表具体是属于哪个模块的,就一清二楚了。完全没有必要为此设置不同的表空间。这是ORACLE数据库初学者经常会犯的错误。主要是对ORACLE表空间的定义不是很熟悉所导致的。

  二、 对预计存储数量比较大的表时,要给与额外的重视。

  有些表非常的大。我们这边说的大,不一定是说结构复杂,而是指在这个表格中,预期会存储比较多的数据。为了提高对这个表格的处理效率,我们在事先要做出一定的安排。否则的话,后续对这些大表进行查询、插入等操作的话,速度会很慢。所以,我们就有必要在数据库设计的时候,先预先估计一下表的数据存储量,把一些数据量大的表格,做一些额外的设置。如在ERP软件的数据库设置中,一般来说,产品数据与物料清单数据这两个表的数据量会比较大;而从长远看的话,销售订单、采购订单、生产订单、记账凭证等这种单据类相关的表格其数据量也会比较大。一年两年可能感觉不出来,但是,到十年后,这个纪录数量就会很庞大。而像ERP系统这种大型的信息化管理项目,用个几十年时很正常的事情。而且,为了记录的完整性,也不建议用户把以前的数据删除。所以,为这种应用进行数据库设计的时候,要充分考虑这些大表的性能问题。

  具体的来说,设计大表的时候,可以考虑遵循如下的建议。

  一是不要为大表设置存储的限制。在ORACLE数据库中,可以为每张表格设置存储配额限制。如此的话,表最大容量就不能超过这个限制。对于一些数据容量比较小的表格,这么设置时合理的,可以提高空间的利用率。但是,若数据量比较大的话,就不建议事先设置表的存储空间了。如ERP系统的销售订单表,其刚开始可能记录量很小,第一年预计只有1G的记录容量,但是,估计在十年后,这个记录容量就会达到10G了。在这种情况下,我们怎么来给其设置存储空间呢?一开就设置10G空间,这也是不合理的。而且,设置存储空间,就意味着有可能产生存储碎片,从而影响到数据查询的效率。所以,在数据库表的设计过程中,若某些应用的表可能会有比较大的数据容量时,建议不要对其存储空间做出任何的限制。

  二是要为这大表分配足够的临时空间。如我们使用ERP系统时,要查询产品资料信息。我们都知道,产品信息的话,有些企业这个纪录数非常的庞大。而且在查询时,我们还会经常的进行排序操作。如有时候会按照产品编码对查询出来的数据进行排序。当记录少的话,还好;但是,当记录多的话,这个排序动作,要求具有比较大的临时存储空间。所以,当某个表预计会有很大的记录数量的时候,我们就要给其分配足够多的临时空间。临时空间的存储参数设置取决于临时表空间的默认储存参数设置。我们可以更改这些参数,以达到我们对要求。若没有给大表分配足够多的临时空间的话,则排序的动作将会很慢,而且很可能不成功。

  三是要考虑将表与表的索引分离存放。大表所对应的索引通常也比较大。一般来说,索引的数量是随着表记录的数量增加而增加,两者是接近于一个正比例的关系。所以,通常表的记录容量大的时候,索引数量也会很庞大。针对这种情况,我们考虑突破我们上面讲的表空间的规则定义。而考虑把表和他的索引分别存储于不同的表空间中,甚至在条件允许的情况下,分别存储于不同的硬盘中。这么做的好处是什么呢?最大的好处是让索引比较容易的获得所需要的连续的存储空间,从而提高输入输入的效率。通俗的说,就是可以提高数据的查询效率。如不这么处理的话,查询大容量的记录的话,数据库可能需要花费30秒;而如此设计的话,就可能把时间缩短为10秒。这是一个很明显的性能改善。

  三、 如何给表命名?

  上面我在讲如何为表分配存储空间的时候,已经讲到过这方面的问题。下面,我就将对这个问题进行详细的描述,以帮助数据库管理员掌握一套好的数据库命名规则。

  首先,毋庸置疑的,在为标命名的时候,要遵循ORACLE数据库的基本命名规则,如不能以数字开头为表命名,如不能利用数据库的关键字为表命名,如表的名字不能重复等等。这些是最基本的要求,就不用我多费口舌了。除了要遵循这些基本的命名规则外,在实际工作中,为了数据库后续的维护等方面出发,我们还是要遵循一些额外的规则。这些规则跟ORACLE定义的规则不同。我们所讲的规则没有约束力,可以说,只是业界的一些共识而已。你若不怎么处理,ORACLE数据库也不会说你错误,只是后续维护的时候,会比较麻烦而已。

  一是在对数据库命名的时候,最好能跟体现表的分类关系。如最常见的,我们在设计数据库的时候,表都是按系统的具体模块来区分的,如根据前端系统要求的不同,数据库的表大致可以分为系统基本配置表、销售模块表、采购模块表、报表模块表等等。我们可以根据这些模块的不同,分别给与不同的前缀来区分。这么做的好处是很明显的。如一看到表最大名字,就可以知道这个表是属于哪个应用的、哪个模块的,这无疑可以提高数据库设计与前台软件开发的效率。同时,数据库中默认的排序规则是按名字来排序的,所以,为表格设置类别前缀的话,可以把同一类的表格排在一起,方便我们察看。

  二是对表格命名的时候,要考虑可读性,而不能随便阿狗阿猫的乱取名字。最常见的是,那些刚学数据库的人,在表命名的时候,如要建几张测试表,就会随便命名如TEST1,TEST2之类的。虽然这只是测试,但是,也不符合我们的命名过则。要做测试的话,那就以TEST开头,然后后面加上具体要测试的内容。如此的话,我们才可以通过表的名字知道该表具体的用途。而不用打开表去看里面具体的结构或者注释才能知道我们需要的信息。所以,在设计表的名字的时候,还要关注一下其的可读性。

分享到:
评论

相关推荐

    在EXCEL公式中调用存放在其它单元格中的工作表标签名称

    在EXCEL公式中调用存放在其它单元格中的工作表标签名称

    创建一个静态的顺序表存放整数

    创建一个静态的顺序表存放整数。大小为10.完成以下的操作输入6个整数,1.打 印出顺序表中的内容,并显示表中剩余的空间个数。在顺序表中的第3个位置插入元素O.2.打印出顺序表中的内容,并显示表中剩余的空间个数。再...

    数据结构实验线性表(用java创建顺序表与链表并解决实验题目)

    (1)创建一个顺序表,存放在数组 A[N]中,元素的类型为整型,设计算法调整 A,使其左边的所有元素小于 0,右边的所有元素大于 0(要求算法的时间复杂度和空间复杂度均为 O(n))。 (2)建立一个循环单链表,其节点...

    powerdesigner为表设置表空间

    例如,可以将经常访问的数据放在高性能磁盘上的表空间中,而将不常用的数据存放在较低性能的磁盘上,以此来平衡整个系统的性能与成本。 #### 三、在 PowerDesigner 15 中为表指定表空间的具体步骤 在 ...

    禅道数据表结构

    该表用于记录产品的详细计划信息,如版本发布计划、里程碑等,帮助项目团队明确产品的发展方向和时间表。 ##### 3. zt_story - 需求表 - **zt_story**: 主要记录了软件项目中的需求信息,包括需求的详细描述、...

    基于数组存放数据的顺序表

    在这个主题中,我们将深入探讨基于数组存放数据的顺序表,包括其基本概念、操作方法、优缺点以及相关的编程实现。 顺序表在内存中是连续分配的,每个元素在数组中的位置对应其在顺序表中的位置。例如,数组的第一个...

    MySQL数据库文件存放位置

    例如,如果你有一个名为`mydb`的数据库,它的数据文件将存放在`data\mydb`目录下。`3.找到数据库.png`可能显示的就是这个过程,演示了如何在Windows资源管理器中找到特定数据库的数据文件。 在`4.文件介绍.png`中,...

    顺序表和链式表的基本操作

    顺序表是一种线性数据结构,它的元素在内存中是连续存放的。这种结构的优点在于访问速度快,因为元素可以通过索引直接访问,时间复杂度为O(1)。然而,它的主要缺点是动态扩容或缩容时可能会导致较高的时间开销。在...

    第一章:数据和表:存放一切东西的地方

    标题中的“数据和表:存放一切东西的地方”指的是在信息技术领域中,数据是信息的基本单元,而表则是组织和管理这些数据的主要方式。在数据库管理系统(RDBMS)中,表是一个二维结构,由行(records)和列(fields)...

    档案存放位置表(表格模板、DOC格式).doc

    7. **管理实践**:在实际操作中,应定期更新档案存放位置表,确保其准确性。同时,可以结合电子档案管理系统,实现数字化存储和检索,进一步提升管理效率。 8. **法规遵从性**:根据国家和地区的法律法规,企业可能...

    顺序表数据结构算法实现

    顺序表数据结构算法实现 顺序表是一种常见的线性表数据结构,通过顺序存储的方式来存储数据。下面是关于顺序表的知识点总结: 1. 顺序表的定义:顺序表是一种线性表数据结构,它是通过顺序存储的方式来存储数据的...

    档案存放位置表.doc

    在IT管理领域,档案存放位置表是至关重要的文档,它涉及到信息存储、组织和检索的高效性。在数字化时代,虽然很多数据存储在云端或服务器上,但纸质文档的管理仍然不可忽视,尤其是在法律、财务、政府机构和企业中。...

    北京市存档人员登记表

    北京市存档人员登记表 将档案存放在人才时所需要打印并填写的表格 北京市存档人员登记表 将档案存放在人才时所需要打印并填写的表格

    表、用户、表空间关系

    这意味着不同用户可以将他们的表存放在同一个表空间中。这种安排有助于简化存储管理和优化磁盘空间利用率。但是,这也可能带来一些问题,比如,如果一个用户大量占用表空间资源,可能会对其他用户的表造成影响。 5....

    HddReg v1.51 ,这是一款G表级硬盘坏道维修工具

    该表由硬盘自身更新并存放在硬盘内部(伺服区里)。该表的信息可以指示硬盘的当前状态。G-List里有较多的存放量是硬盘损坏的早期症状。 [使用方法] 1、选择硬盘,输入硬盘序号相应数值(多硬盘),回车。 2、输入...

    泛微OA流程存储的数据表解析

    在OA系统中,流程的执行和管理涉及到多种数据表,这些表存储了表单、单据、审批节点等核心信息。以下是这些关键概念的详细解析: 1. **名词定义**: - Nodeid: 节点ID,用于标识流程中的不同步骤。 - Nodetype: ...

    档案存放位置表(DOC格式).doc

    在IT管理领域,档案存放位置表是至关重要的文档管理工具,尤其对于企业、政府机构以及任何需要高效管理和追踪大量纸质文件的组织来说。这个“档案存放位置表(DOC格式).doc”文件显然是一个用于记录和查找档案存储...

    数据透视表介绍——组合

    2、通常,透视表项目的排列顺序是按升序排列或取决于数据在源数据表中的存放顺序; 3、对数据透视表项目进行排序后,即使你对其进行了布局调整或是刷新,排序顺序依然有效; 4、可以对一个字段先进行过滤而后再排序...

    MySQL数据库文件介绍及存放位置

    无论MySQL运行在哪种操作系统或使用哪种存储引擎,该文件都是必须存在的。 ##### 2. MyISAM存储引擎数据库表文件 MyISAM是MySQL早期常用的存储引擎,它将数据和索引分开存储。 - **.MYD文件**:即MYData,存储表...

    顺序表和链表.pdf

    顺序表是最简单的一种线性表存储结构,它的元素存放在一片连续的存储空间中,并且通过数组来表示这种结构。在顺序表中,每个元素都有一个明确的索引位置,可以通过该索引来直接访问元素。 ##### 2.1 顺序表的基本...

Global site tag (gtag.js) - Google Analytics