数据表设计考虑哪些问题?

2024年11月18日 09:50
有5个网友回答
网友(1):

DB2数据库的性能与稳定性直接跟数据库对象的多少、大小有关。如果对象很少,不复杂,那么就算不怎么规划,也能够达到比较高的性能。如果对象数据比较多、比较大的话,那么就需要在数据库设计之前好好的规划,否则会在很大程度上影响数据库的性能与稳定性。

一、选择合适的语言与数据库字符集。

在企业中部署数据库的时候,首先需要在操作系统上安装数据库。而在安装数据库的时候,需要选择安装的语言环境。即是以中文状态下安装数据库还是以英文状态安装数据库。如在启动安装程序的时,可以利用/i language选项来指定安装过程中所采用的语言。到目前为止,DB2数据库已经支持很多种语言。那么数据库在安装过程中,该采用什么语言呢?笔者建议,只要数据库管理员有一点英语基础,最好能够采用英文语言环境来进行安装。虽然说现在DB2数据库的中文语言环境已经设计的比较完善,但是笔者仍然担心其有一些不知名的漏洞。为此笔者在安装DB2数据库的时候,基本上都采用的是英文语言环境来进行安装。即将语言设置为“EN”,表示英文。提高DB2数据备份与恢复的效率。

另外如果DB2 数据库中要保存英文以外的数据,或者说用户会使用不同的字符集访问数据库时,还需要在数据库安装过程中选择特定的数据库字符集。DB2数据库中的所有字符数据,包括数据字典中的数据,都是存储在数据库字符集中的。如果用户使用不同的字符集访问数据库时,数据库管理员就需要选择包含所有这些用户的字符集的超集。只有如此,才能够确保系统能够很方便的使用替代字符完成字符的转换,从而提高数据库的性能。如果用户选择的字符集不对,有可能会出现一些莫名其妙的问题。如一次用户在安装数据库过程中,没有选择合适的字符集。虽然在使用的过程中,其存储中文字符没有问题。但是当对数据库采取还原操作时,却发现还原后的数据库中有些原来是中文字符的地方,尽然出现了乱码。这主要就是没有选择合适的字符集惹的祸。有时候如果字符集选择不当的话,从外部数据源(如Excel表格)导入数据的时候,中文数据也会无法顺利导入。所以,数据库管理员在安装数据库的时候,需要根据实际企业,来选择合适的字符集。

二、评估数据库对象的大小、数量。

DB2数据库的性能与稳定性直接跟数据库对象的多少、大小有关。如果对象很少,不复杂,那么就算不怎么规划,也能够达到比较高的性能。如果对象数据比较多、比较大的话,那么就需要在数据库设计之前好好的规划,否则会在很大程度上影响数据库的性能与稳定性。其实DB2 数据库就好像一个仓库,数据库中的对象(如索引、数据表、表空间)等等就好像仓库中的货物。如果货物比较少,那么随便放放,仓库都显得很空旷。货物寻找起来也会很方便。但是如果货物数量比较多、比较大,就必须要对其存储空间进行合理规划。只有如此才能够让仓库的空间利用率达到最佳状态。并且货物的存放有序,在查找起来也特别的方便。笔者这里就以仓库管理为例,说话该如何做好数据库对象大小、数量等方便的评估,以及他们对于数据库性能与稳定性的影响。

1、根据对象大小来规划存储空间。在仓库货物的摆放上,要根据货物的大小来规划存储空间。或者说要首先防止大的货物。只有如此空间的利用率才会最高。其实在规划DB2对象的时候,也是如此。如某些表可能会包含的记录比较多,属于大表。此时数据库管理员就需要考虑,是否将其放置在一个独立的表空间或者硬盘空间上,以提高数据操作的性能。大表所对应的索引往往也是比较大的。为此在硬件条件允许的情况下,将索引表与数据表分别存放在不同的硬盘上,可以提高数据库的性能。而对于一些比较小的对象(如数据表),可以将它们存放在一个表空间中。其实这个表空间就好像仓库中的一个个纸盒子。将小的对象放入到这个“纸盒子”中,不但不占空间,而且也容易管理。

2、根据对象的使用频率来规划存放空间。在仓库中摆放物品的时候,往往会把近期就要用到的货物或者频繁需要用到的东西放在仓库门口或者容易拿到的地方。如此在拿这些货物时就会比较便捷,也不会对其他货物产生影响。对于DB2数据库中的对象来说,也是这么一回事。可以将那些访问量比较大的对象,如索引、数据表,存放在性能比较好的硬盘上或者单独的硬盘中。此时访问这些数据,就不会与其它对象产生I/O冲突,操作起来速度就会比较快。而将不怎么用到的对象,存放在一起。由于他们不怎么被用到,所以即使存放在性能比较低的硬盘上,其对数据库性能产生的负面影响也是非常有限的。 在DB2数据库里面如何更新执行计划

3、根据类别来存放数据库对象。在仓库中存放货物的时候,还会对其进行分类。然后根据类别来进行存放。这有利于货物的管理与检索。其实在数据库对象存储空间设计时,也需要考虑这个因素。如现在应用软件在设计的时候,很多都是根据模块来设计。那么在数据库对象设计时,也需要根据这个模块来设计存储的空间。如将同一个模块的数据库对象存放在同一个表空间内。不过这可能会跟上面的两个建立相违背。此时最好是在对象的命名上做文章。如可以根据模块的不同,分别给数据库对象取一个相同的前缀或者后缀。如即使同一块模块要用到多个表空间,此时就可以给表空间一个相同的前缀。如此在管理数据库对象的时候,根据表空间的前缀就可以判断其所属的模块了。如果再加上一个后缀来表示其数据库对象的分类,那么就更合理了。为此在管理数据库对象的时候,要执行分类管理。不仅要从技术上对其进行分类,如分为索引、数据表、关键字等等。还需要从功能上进行分类,如按应用程序的模块来进行分类等等。

三、设计好数据库备份与还原的方案。

在数据库交付生产使用之后,往往需要进行大量的测试。但是在测试过程中往往又会产生很多的垃圾数据。可是交给企业应用的,肯定是一个干净的数据库系统。为此在数据库设计的时候,就需要想好如果减少测试过程中的垃圾数据。或者采取什么样的方式来实现在交互时自动清除垃圾数据的机制。

一般来说,想要一个数据库备份与还原的方案,减少数据库测试所产生的垃圾数据。如现在在给企业部署数据库的时候,往往是先安装一个干净的数据库系统。当然字符集这些需要预先设置好。然后再利用数据库还原功能将预先定义好的数据库模型还原出来。

另外有些时候需要两个方案互为补充。如在数据库初始化的过程中,采用数据库还原的方式来创建数据库对象。但是在应用软件升级的时候,由于此时已经有了用户的数据,为此不能够在使用数据库还原的方法。而是通过应用程序来执行某些SQL代码,来调整或者增加部分数据库对象。无论采用哪一种方式,需要遵循的一个原则就是在给企业创建数据库对象时要最大限度的减少测试。而要做到这一点,就是需要先在测试服务器上创建对象并测试对象可用。然后直接将相关的SQL代码在投入使用的数据库服务器上执行。

网友(2):

OK我来说几句 下面是数据库设计过程中我们要注意的问题,和要遵循的原则1. 原始单据和实体的间关系
  可以是对、对多、多对多关系在般情况下它们是对关系:即张原始单据对应且只对应个实体在特殊情况下它
们可能是对多或多对关系即张原始单证对应多个实体或多张原始单证对应个实体这里实体可以理解为基本表明
确这种对应关系后对我们设计录入界面大有好处
  〖例1〗:份员工履历资料在人力资源信息系统中就对应 3个基本表:员工基本情况表、社会关系表、工作简
历表这就是“张原始单证对应多个实体”典型例子
   2. 主键和外键
  般而言个实体不能既无主键又无外键在E—R 图中, 处于叶子部位实体, 可以定义主键也可以不定义主键(它
无子孙), 但必须要有外键(它有父亲)
  主键和外键设计在全局数据库设计中占有重要地位当全局数据库设计完成以后有个美国数据库设计专家说
:“键到处都是键除了键的外什么也没有”这就是他数据库设计经验的谈也反映了他对信息系统核心(数据模型
)高度抽象思想:主键是实体高度抽象主键和外键配对表示实体的间连接
   3. 基本表性质
  基本表和中间表、临时表区别它具有如下 4个特性:
   (1) 原子性基本表中字段是不可再分解
   (2) 原始性基本表中记录是原始数据(基础数据)记录
   (3) 演绎性由基本表和代码表中数据可以派生出所有输出数据
   (4) 稳定性基本表结构是相对稳定表中记录是要长期保存
  理解基本表性质后在设计数据库时就能将基本表和中间表、临时表区分开来
   4. 范式标准
  基本表及其字段的间关系, 应尽量满足第 3范式但是满足第 3范式数据库设计往往不是最好设计为了提高数
据库运行效率常常需要降低范式标准:适当增加冗余达到以空间换时间目
  〖例2〗:有张存放商品基本表如表1所示“金额”这个字段存在表明该表设计不满足第 3范式“金额”可以
由“单价”乘以“数量”得到介绍说明“金额”是冗余字段但是增加“金额”这个冗余字段可以提高查询统计
速度这就是以空间换时间作法
  在Rose 2002中规定列有两种类型:数据列和计算列“金额”这样列被称为“计算列”而“单价”和“数量
”这样列被称为“数据列”
  表1 商品表表结构
  商品名称 商品型号 单价 数量 金额
  电视机 29吋 2,500 40 100,000
   5. 通俗地理解 3个范式
  通俗地理解 3个范式对于数据库设计大有好处在数据库设计中为了更好地应用 3个范式就必须通俗地理 最后说一下 如果项目的表在500个左右的话 数据可以有些冗余的 这样可以大大的提高程序的运行效率如果这个项目要有很强的扩展性 请严格遵守 第三范式 3NF 其实理论上这么讲,在正正开发中我们还是要根据实际情况来取舍的祝你好运!

网友(3):

数据表设计时,应该注意你的表的性能问题,一般原则上达到第三范式就可以了。过高的范式会影响性能。当然,你要根据实际情况,有的分布式系统要求第二范式来增大冗余来达到分布式处理数据类型要尽可能的合理。就是不要追求大,合适就可以了。留有一点的空间就可以了。那样对你将来建索引有很大的影响。数据表之间的关系一般在你搞需求分析的时候会弄清楚当然,设计整体表,最好采用自上而下设置整体,再用自下而上完成底层表

网友(4):

数据的设计理论上讲,分三范式。具体的内容你自己百度搜索一下。这里我简单跟你举个例子.比如有一个学生表(students)还有一个班级表(classes)studengs的字段有 ID studentName classesIDclasses的字段有 ID classesName ID studentName classesID比如students表里面有一条数据: 1 张三 1 ID classesNameclasses表里面有两条数据: 1 07301班 2 07302班 设计基本就是按这个去设计,具体的其实跟你也说不清楚,如果没有学过数据库的话是很难说清楚了。建议你买点参考资料看看。谢谢

网友(5):

想什么就加什么呗, 现在框架搭好 数据库随你改