2010-08-12 119 views
1

我是新来的数据库设计,我考虑实施一些耗时的工作,所以我想先问一下这是否是最好的选择。数据库设计:绘图存储

事实:

  • 对于我而言在这里,让我们定义一个阴谋,是一组的x,y对。
  • 图可以有不同数量的x,y对。
  • 此外,对于特定情节,可以添加或删除x,y对。
  • 我会有成千上万的地块,每块地块可能会有数百对。
  • 在应用程序中,我将不得不定期收集数千个地块,并将这些地块整合到一个已知域中,对这些积分进行求和,并将此值呈现给用户。

我需要设计一种方法将它存储在数据库中,以便快速检索,修改和存储绘图。

想法1:创建一个Plot表,其中包含x val的文本列表和y val的文本列表并在程序中解析它们。 (我在前面的问题中询问过这个问题,这个想法是由SO社区立即执行的!我想我明白为什么了。)

想法2:创建一个包含plot的元数据的Plot表, 单位)。但是,然后创建Pairs表,其中每行包含一个x val a y val和一个指向Plot表中相应行的外键。当试图绘制一个Plot时,我将不得不在数据库中查询所有对应的Pair,并在我绘制它们之前对它们进行排序。这里有什么愚蠢,耗时或者耗费记忆的东西吗?

想法3:以上都不是......想出一个比我迄今为止想到的更好的产品。

注意:我不得不使用Microsoft SQL Express,而且我不确定什么时候会碰到SQL Express可以执行的操作。另外,在我开始学习数据库的基础知识之后,我有点好奇地学习了Linq-to-SQL ......因此,我仍然处于面向对象的设计思维。

+0

为什么不直接存储在Serializable类和写入XML呢? – 2010-08-12 14:25:32

回答

1

想法2是做到这一点的正确方法。关于性能,请确保您在对中放置索引,以便快速订购和加入。同时保持数据类型尽可能小,你会惊讶地发现有人用一个大整数来表示某个值,例如他们知道这个值永远不会大于10。

1

想法2没有问题,只要所有地块都有单个Y值 - 只有一条曲线。如果某些地块的曲线很少,那么从电子表格制图中借用一系列概念可能会有所帮助。

  • 一系列是一列(或行)的数字 - 矢量。
  • 一个情节可以有很多系列。
  • 一个系列可以被许多地块使用,例如,如果X轴代表时间间隔,许多地块共享相同的轴。
  • OrientationPlotSeries表中放置了一个关于X或Y的系列,因此可以有多个使用相同数据展示序列的图。
  • OrderNoPlotSeries表定义哪个系列首先被绘制出来,并且可用于为每条曲线分配默认颜色。

plot_model_v2