何时拆分大型数据库表?

时间:2012-01-06 12:51:48

标签: sql database performance

我正在开发一个'员工'数据库,这些字段已经开始加起来(20说)。数据库将从不同的UI填充说:

个人信息用户界面:填充“员工”表格的字段,例如生日,姓氏,性别等

就业明细UI:填充“员工”表格的字段,如员工编号,聘用日期,年级等

从单个UI填充所有字段(如您所想)是混乱的,并导致您需要滚动的一个非常长的表单。

我正在考虑将此表拆分为几个较小的表,这样每个较小的表都会捕获员工的相关信息(即根据UI逻辑拆分表)。

然后,这些表将由员工ID加入。我理解用一对一的关系分割表通常不是一个好主意(multiple-database-tables),但可以在逻辑上拆分表,以便在几个中捕获员工信息INSERT语句?

感谢。

3 个答案:

答案 0 :(得分:6)

您的数据模型不应遵守用户界面强加的任何规则,只是为了方便起见。减少给定UI组件的列集的一种方法是使用视图(在大多数数据库中,您也可以使用简单视图INSERT / UPDATE / DELETE)。另一个是避免SELECT *。您始终可以选择表格列的子集

答案 1 :(得分:3)

“可以在逻辑上拆分表,以便在几个INSERT语句中捕获员工信息吗?”

没有

它有什么用?

20个字段是关系数据库的相当字段数。不久前在SO上有一个问题,开发人员预计单个表的字段大于 3,000 字段(实际上超出了相关RDBMS的能力) - 在这种情况下,它确实分开桌子的感觉。

如果只为一小部分行填充列的子集(例如,如果存在特定于公司董事的属性),则拆分表也是有意义的。

但是,根据目前提供的信息,没有明显的理由将表格分开。

答案 2 :(得分:0)

简而言之,您希望规范化您的数据模型。规范化是将数据系统地重组为表格,形成了四十年前EF Codd开发的关系数据模型的理论基础。有标准化水平 - 非标准化,然后是第一,第二,第三等正常形式。

现在规范化在许多数据库商店中只是事后的想法,表面上是因为它被错误地认为会降低数据库性能。

我在IBM网站上发现了一个很棒的摘要,涵盖了可能有所帮助的规范化。 http://publib.boulder.ibm.com/infocenter/idshelp/v10/topic/com.ibm.ddi.doc/ddi56.htm

不幸的是,CJ Date后来修订的原始Codd书并不容易获得。我可以推荐“数据库系统:设计,实施和管理;作者:Rob,P。& Coronel,C.M”。我参加了一个关于使用这本教科书的数据库设计课程,我一直在使用它作为参考。