`
chashui
  • 浏览: 12543 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

Oracle表设计时的注意事项

阅读更多

  表是Oracle数据库中最基本的对象之一。万丈高楼从平地起,这个基础对象对于数据库来说,非常重要。因为其设计是否合理,直接跟数据库的性能相关。从Oracle数据库菜鸟到数据库专家这个过程中,在表设计与管理上,或多或少,会犯一些错误。笔者今天就谈谈自己在这方面的经验与教训,或许能够给大家一些警示作用。

  经验一:在设计大型数据库时,把允许NULL的列放在表的后面。

  在数据库表设计过程中,有些字段要求必须为非空,如表的关键字,单据编号字段等等。在数据库表创建的时候,往往需要把这些字段设置为非空。如此的话,就可以强制用户输入数据,以增强数据的一致性。

  同时,在一张表中,也会有不少的字段,如员工信息表中,员工爱好、注释等字段,就可能允许为空。利用数据库专业术语来说,这些没有内容的字段就是“NULL”字段。

  在数据库表设计的时候,对于这种类型的空字段要特别的留意。一方面,这个NULL字段,不是说其里面存储的是空格。若利用“’’”这个符号去查询空字段的记录的话,往往查不到我们想要的结果。因为在数据库存储的时候,若字段为NULL,则这个值根本没有存储。另一方面,正因为上面这种特性,所以,在表设计的时候,最好把允许NULL的字段放在表的末尾,当数据库比较大或者空字段比较多的话,则可以大大的减少数据库的存储空间。

  另外,在数据库创建表的时候,是按照列建立的时间来排序的。所以,当某个列建立好之后,除非重新删除再建立,否则无法调整列的顺序。这就要求数据库管理员在创建表之前,就要对列、以及是否为空有一个明确的定义。只有如此,才能够合理安排列的顺序。

  经验二:养成勤于写注释的习惯。

  判断一个人是否是数据库专家,从一个“注释”的小习惯中就可以 看得出来。若一个人在数据库开发的时候,勤与写注释,如在建立表或者字段的时候,能够利用comment命令对表与字段进行注释,则可以从一定程度上判断他是这方面的行家。相反,若其开发的数据库,注释没有多少,则基本可以判断,他是一个刚入门的菜鸟。或者说,其没有参加过大型数据库的设计。

  这主要是因为,在数据库开发过程中,往往不是一个人可以完成的。如在开发一个ERP数据库的时候,可能有些人专门负责开发基础表,而有些人负责维护视图,等等。大家都是分工合作。同时,在前台也有程序员需要调用后台的数据库表与字段。所以,中大型的数据库与应用系统往往是大家协作的结果。

  为此,为了提高表与字段的可读性,一个数据库管理人员开发的表格,大家都可以看的懂,就需要给表与字段设置比较详尽的注释。在Oracle数据库中,为了给其他伙伴提供有意义的帮助信息,就可以利用Comment命令来描述表、字段的作用以及一些引用的注意事项。这个小小的命令,可以大大提高表与字段的可读性,提高数据库与程序开发团队的协作性。

  经验三:选择合适的数据类型与长度。

  虽然数据库系统在处理数据时,某些数据类型是兼容的,或者会对相关的数据类型进行自动的转换。如对于一些日期类型的字段,其也可以赋值给字符类型的字段;整数型的字段跟浮点型的数据类型也是兼容的。但是,数据库设计人员不能因为数据库系统的这个特性,就放宽了对数据类型的把关。因为有时候,如在基础数据导入或者数据成批更新的时候,虽然最后可以成功完成任务。但是,数据库在这个过程中,需要进行数据类型的转换,就额外的增加了数据库的负担。

  另外,在数据库设计的时候,也需要考虑字段的长度。若在建立表的时候,字段设计的太长,则会浪费存储空间。相反,若设计的太短的话,会影响前台系统的使用。所以,数据库管理员对于字段的长度,也要引起足够的重视。

  再者,若在创建字段的时候,不能够确认字段长度的话,则最好采用变长的数据类型。如以字符型数据类型为例,就有CHAR与VARHAR2两种。其中,CHAR字符类型主要用来存储固定长度的字符串,允许的最大长度为2000字节。若实际存储的信息内容不到定义的位数的话,则系统会在这些列值为部添加空格,直到其长度到为止。可见,若采用固定长度字段类型的话,即使数据没有这么多,也会占用这么多的存储空间。所以,这种方式下,存储空间的浪费会比较大。后者主要用来存储可变长度的字符数据。当在VARCHAR2列中插入的数据,如果没有到其最大位数的话,则数据库不会在尾部添加空格。从而可以让空间利用最大化。

  所以,在表设计的时候,数据库管理员要选择合适的数据类型,并且为其设置合适的长度。

  经验四:确定表需要采用的完整性约束与默认值。

  有些数据库管理员在数据库设计的时候,喜欢边设计边开发。如在设计表的时候,一开始不确定那些字段要添加约束,哪些字段不能为空,哪些字段需要什么默认值等等。等到需要的时候,再随意添加。这种做事方式,往往会给数据库带来不稳定的隐患。

  如某个数据库管理人员在建立表的时候,一开始没有给某个字段设置为默认值。后来前台程序开发人员说需要给这个字段添加某个默认值。但是,此时这个表中已经有了跟系统相关的基础数据。有了数据的表格后,往往不允许再重新设置默认值。否则的话,会给数据库造成一定的负面影响。

  所以,笔者认为,数据库管理员在建立表之前,需要确定表所需要的完整性。如哪些列作为主键;哪些列作为外键;哪些列需要唯一性等等。

  经验五:确定表需要采用的类型。

  在Oralce数据库中,存储用户数据可以使用标准表、索引表、筑表和分区表。有时候,基于不用的应用,选择不同类型的数据表,往往可以大大的提高数据库的性能,特别是数据查询的效率。

  如在合适的情况下,数据库管理员可以使用筑表节省存储空间并提高特定类型的SQL语句的性能。不过,我们平时利用的比较多的出了基本表之外,就是索引表了。因为索引表在某些特殊的应用下,可以表现出很好的性能。如在索引表中,可以通过溢出存储功能提高常用列的查询速度;如果经常需要通过主键来查询整条记录的话,则利用索引表可以明显提高查询效率。当然,索引表也不能够乱用。若索引表所存储的数据,变化比较频繁的话,则采用索引表这种类型的表格,反而会事倍功半。

  所以,为数据库表选择合适的类型,可以大幅度的提高数据库的性能。当数据库的记录数量越大,这种优势就越明显。

  总之,笔者认为,在Oracle数据库设计中,表的建立虽然是一项基础工作。但是,有时候对于数据库的性能,比其他内容影响更加深远。所以,我们要重视表的设计,从基础做起,为提升数据库的性能而努力。

 

分享到:
评论

相关推荐

    SqlServer表结构转oracle表结构

    7. **注意事项**:转换过程中需要注意兼容性问题,如SQL Server特有的特性(如clr存储过程)在Oracle中可能不支持。此外,数据迁移不仅仅是结构的迁移,还需考虑数据的一致性和完整性,避免因迁移导致的数据丢失。 ...

    Oracle数据库表转换为Mysql

    四、转换注意事项 在转换过程中,需要注意以下几点: (1)表结构的更改:在转换过程中,可能需要手动更改表结构,以适应Mysql数据库的要求。 (2)数据长度的限制:在转换过程中,需要注意数据长度的限制,以免...

    oracl转mysql注意事项

    ### Oracle转MySQL注意事项详解 #### 一、概述 在企业级应用中,有时需要将现有的Oracle数据库迁移到MySQL,这不仅涉及到技术上的挑战,还可能影响到整个系统的稳定性和性能。本文档旨在提供一个全面的指南,帮助...

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    8. **注意事项**:数据迁移时需考虑字符集兼容性,因为MySQL和Oracle可能使用的字符集不同,可能导致编码问题。 9. **优化与调整**:转换后的Oracle表可能需要根据Oracle的最佳实践进行一些调整,如分区策略、索引...

    oracle外部表的使用

    ### 四、注意事项 在使用Oracle外部表时,需要注意以下几点: 1. 外部表不能使用DML语句(如INSERT, UPDATE, DELETE)进行修改,因为数据实际上存储在数据库之外的文件中。 2. 外部表的数据类型和格式必须与数据...

    Oracle 11i 表结构

    3. **注意事项**: - 弹性域虽然方便,但可能会增加数据库管理的复杂度,因此在使用时需谨慎考虑。 - 应确保对弹性域的使用符合企业的数据管理和安全政策。 #### 六、总结 Oracle 11i 表结构的设计不仅影响着...

    通过MSQL通过视图访问ORACLE中的表

    5. **注意事项**:跨数据库操作需要注意性能问题,因为每次对视图的操作都会触发与Oracle的网络通信。因此,视图的设计应尽可能减少数据传输量和提高查询效率。 6. **安全性**:确保在配置数据源和编写SQL语句时,...

    部分常见ORACLE面试题以及SQL注意事项

    1. Oracle和SQL面试准备:文档中提到了“部分常见ORACLE面试题以及SQL注意事项”,这暗示文档中包含了针对Oracle数据库和SQL语言的面试准备知识点。由于文件中对创建表和SQL语句有具体的描述,我们可以推断文档可能...

    更改Oracle表中字段的顺序的终极方法

    5. **注意事项**: - 执行此操作前建议先备份数据,以防意外情况发生。 - 在正式环境中测试此脚本前,请务必在测试环境中验证其正确性。 #### 结论 通过上述方法,我们可以有效地调整Oracle表中的字段顺序,而...

    powerdesigner创建oracle_数据库表,设置表主键列为自动增长

    #### 七、注意事项 - 确保在创建表时已经正确设置了主键字段,并且该字段的数据类型支持自动增长。 - 序列的创建脚本可能不会自动包含在表的创建脚本中,需要手动添加。 - 测试时,检查主键是否按照预设规则自动...

    Oracle存储过程中使用临时表

    ### 注意事项 - **权限**:创建和使用临时表需要相应的权限,确保用户有足够的权限进行操作。 - **索引和约束**:临时表可以创建索引和约束,但这些对象仅在会话或事务内有效。 - **存储空间**:虽然临时表在会话...

    Oracle触发器备份表数据

    #### 使用触发器备份数据的注意事项 1. **性能影响**:频繁的触发器调用可能会对数据库性能产生影响,特别是在高并发环境中。 2. **数据一致性**:确保触发器逻辑正确无误,避免因错误的触发器逻辑导致的数据不一致...

    Oracle中导出表结构

    #### 五、注意事项 - **权限问题**:确保执行这些查询的用户具有足够的权限访问相关的视图。 - **性能考虑**:当处理大量表时,查询可能会消耗较多资源。合理优化查询语句和索引可以帮助提高效率。 - **兼容性问题*...

    Oracle数据库表建立字段唯一性的方法

    - **注意事项**:如果尝试插入重复值,Oracle将抛出一个错误。 2. **唯一索引(Unique Index)** - **定义**:唯一索引是在表的特定列上创建的索引,其作用与唯一约束相似,但它是通过索引实现的,而不是通过表级...

    oracle 数据库 scott.sql 范例表

    这个文档可能提供了更详细的导入"scott.sql"到Oracle数据库的步骤,包括环境配置、数据库连接设置、安全注意事项等。确保按照文档的指导进行操作,防止出现错误。 6. SQL学习与实践: SCOTT用户和它的表是学习SQL...

    Oracle临时表

    #### 四、临时表管理注意事项 - **数据的生命周期**:临时表的主要特点是数据不会永久保存。在设计应用时,不应将重要数据或需要长期保留的数据存储在临时表中。 - **数据不会备份或恢复**:临时表中的数据不会被...

    oracle创建分区表.pdf

    在Oracle数据库中,分区表是一种高级表设计技术,用于管理非常大和繁忙的表。使用分区技术可以改善数据库性能、可管理性和可维护性。本篇文档详细介绍了Oracle数据库中分区表的创建、使用和扩容过程。 一、分区表的...

    SQL面试题大全(部分常见ORACLE面试题以及SQL注意事项)

    - 注意查询语句的编写,避免全表扫描,合理使用JOIN、WHERE和GROUP BY子句。 6. **其他面试题可能涉及**: - 数据库设计原则,如范式理论。 - SQL查询优化,如EXPLAIN分析查询计划。 - 触发器、存储过程的使用...

    oracle 数据库设计.docx

    - **注意事项**: - **分布式事务问题**:处理跨数据库的事务时可能会遇到困难,需要使用SOA服务架构来解决这类问题。 - **跨节点JOIN问题**:由于数据分布在不同的节点上,进行JOIN操作时可能需要额外的处理。 #...

    ORACLE分区表操作大全

    4. **使用注意事项** - 分区设计应考虑业务需求和查询模式,确保常用查询能有效地利用分区。 - 分区数量不宜过多,过多的分区会增加管理和维护的复杂性,且可能导致查询优化器选择次优的查询路径。 - 选择合适的...

Global site tag (gtag.js) - Google Analytics