我是DB的新手,我在这里遇到了问题。 我需要使用树结构将表达式存储到表中。像这样:
此表达式的唯一ID为:1
我首先将其转换为树结构,如:
然后,我尝试将树保存到名为“Node”的表中。像这样:
我的问题是:对于每个表达式,我应该将树结构保存到现有的“Node”表中(使用ExpressionID来区分表达式)?或者我应该为每个表达式创建一个新表(当然,使用表达式名称作为表名)?
创建大量表格可能效率不高?
谢谢! 如果有必要,我也可以在这里发布其他相关表格。
答案 0 :(得分:2)
不要创建新表。这会产生与表达式一样多的表,使整个系统更难维护。
此外,当DBMS必须在许多(对于给定的表名称)中找到正确的表时,这也会花费一些性能,可能比在索引良好的单个表中查找一堆行更多。并且锦上添花的是你可能浪费了大量的空间 - 一个表在页面中增长,如果你的表达式比一个页面小得多(通常是4-8KB,取决于数据库),你最终会许多页面几乎完全是空的。
作为旁注,您是否甚至需要将单个表达式节点存储为数据库中的单独行?如果你想以某种方式搜索或分析单个节点,这是有道理的,但如果您只需要读取并执行表达式作为一个整体,那么只需存储整个表达式(以其字符串格式或编码)
答案 1 :(得分:0)
不,不要为每个表达式创建一个新表,将它们存储在一个表中。这是常规的DB方式。表不是对象。