我试图想出一个很好的方法来将这些点存储在数据库中。
我认为好的几种方式首先是文本类型,然后使用分隔符来对点进行分配,使其在db中看起来像这样
+----------------------------+
| x_points | 1:2:3:4:5... |
| y_points | 1:2:3:4:5... |
+----------------------------+
然后,网络应用程序将拉出点并将它们绘制在画布上。
有没有更好的方法将点存储到数据库中的一行?
对于复杂函数,点数可以是每个图形1000个点,然后是每个点的分隔符,因此可以加载字符。
由于这些评论,我将尝试详细说明。我正在使用画布来绘制用户输入的函数。用户也可以在图表上绘图,我想存储图纸的线条数据以及我认为可以以相同的方式存储,并且点的计算只需要发生一次。
样本seniro是用户可以绘制y = x ^ 2然后圈出y截距。然后他们可以链接到那个画布,它会重绘他们的y截距和图形的圆圈。当然这是一个简单的例子,但我无法弄清楚如何最好地在画布上存储点。
希望这会有所帮助。
答案 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点。