创建新表或将数据插入现有表?

时间:2012-03-02 16:34:46

标签: database-design

我是DB的新手,我在这里遇到了问题。 我需要使用树结构将表达式存储到表中。像这样: For example, this is the expression

此表达式的唯一ID为:1

我首先将其转换为树结构,如:

enter image description here

然后,我尝试将树保存到名为“Node”的表中。像这样: enter image description here

我的问题是:对于每个表达式,我应该将树结构保存到现有的“Node”表中(使用ExpressionID来区分表达式)?或者我应该为每个表达式创建一个新表(当然,使用表达式名称作为表名)?

创建大量表格可能效率不高?

谢谢! 如果有必要,我也可以在这里发布其他相关表格。

2 个答案:

答案 0 :(得分:2)

不要创建新表。这会产生与表达式一样多的表,使整个系统更难维护。

此外,当DBMS必须在许多(对于给定的表名称)中找到正确的表时,这也会花费一些性能,可能比在索引良好的单个表中查找一堆行更多。并且锦上添花的是你可能浪费了大量的空间 - 一个表在页面中增长,如果你的表达式比一个页面小得多(通常是4-8KB,取决于数据库),你最终会许多页面几乎完全是空的。

作为旁注,您是否甚至需要将单个表达式节点存储为数据库中的单独行?如果你想以某种方式搜索或分析单个节点,这是有道理的,但如果您只需要读取并执行表达式作为一个整体,那么只需存储整个表达式(以其字符串格式或编码) / BLOB中的XML或其他)更有意义。

答案 1 :(得分:0)

不,不要为每个表达式创建一个新表,将它们存储在一个表中。这是常规的DB方式。表不是对象。