最佳MySQL数据类型

时间:2011-04-10 00:00:58

标签: php mysql graph

我试图想出一个很好的方法来将这些点存储在数据库中。

我认为好的几种方式首先是文本类型,然后使用分隔符来对点进行分配,使其在db中看起来像这样

+----------------------------+
| x_points    | 1:2:3:4:5... |
| y_points    | 1:2:3:4:5... |
+----------------------------+

然后,网络应用程序将拉出点并将它们绘制在画布上。

有没有更好的方法将点存储到数据库中的一行?

对于复杂函数,点数可以是每个图形1000个点,然后是每个点的分隔符,因此可以加载字符。


由于这些评论,我将尝试详细说明。我正在使用画布来绘制用户输入的函数。用户也可以在图表上绘图,我想存储图纸的线条数据以及我认为可以以相同的方式存储,并且点的计算只需要发生一次。

样本seniro是用户可以绘制y = x ^ 2然后圈出y截距。然后他们可以链接到那个画布,它会重绘他们的y截距和图形的圆圈。当然这是一个简单的例子,但我无法弄清楚如何最好地在画布上存储点。

希望这会有所帮助。

1 个答案:

答案 0 :(得分:5)

这称为一对多关系。你有一个形状和许多实际点。您通常希望将这些点放入一个单独的表中,如下所示。

+----------------------+      +-----------------+
|        Shape         |      |  Point_Values   |
+----------------------+      +-----------------+
| shape_id (INT)       |      | shape_id (INT)  |
| shape_name (VARCHAR) |      | point_x (INT)   |
+----------------------+      | point_y (INT)   |
                              +-----------------+

要制作新形状,请在Shape表格中插入新形状。然后在Point_Values表中创建一个或多个值。如果您想返回并获取值,您可以使用连接,如下所示:

SELECT s.shape_name, v.point_x, v.point_y
FROM Shape s
JOIN Point_Values v ON s.shape_id = v.shape_id
WHERE s.shape_id = 5

这具有非常灵活的优点。每个形状可以有0个或更多个点,并且隐含强制执行必须有相同数量的x和y点。