在sql中表示矩形集合的好方法

时间:2018-05-16 15:14:07

标签: sql

该数据库包含物理书架的示意图;这是一个例子:

A shelf

Its schematical representation

在允许用户创建原理图的html5画布界面中,架子只是表示为矩形,因此我们的原理图顶行可能是

{ [0, 0, 66, 33], [67, 0, 33, 33] }

所需SQL表示的属性非常简单:用户ID,原理图ID,货架ID。例如,上一个原理图可以属于用户1,是原理图1,并且从左到右,从上到下保持架子1到8。

到目前为止,我最好的选择是有一个货架表:

shelf [integer shelf_id, integer schematic_id, integer left, integer top, integer right, integer bottom]

原理图表:

schematic [integer schematic_id, integer user_id]

但是看起来有点奇怪,因为一个特定的架子只属于一个原理图而且只有一个,它需要一个WHERE查询来从原理图中获取所有架子。同时,如果所有货架都是原理图表的一部分,那么它们如何作为具有单独ID的单个项目存在?

我为这种情况提出了一个更健全的方案吗?

PS:用一个varchar“[left,top,right,bottom]”字段替换顶部,右侧,底部和左侧字段以简化插入会不好或无动于衷?

1 个答案:

答案 0 :(得分:0)

如果您希望在不同的架构之间共享货架,则无需将schematic_id置于货架上。

您只需要一个schematic_shelf关联表,每个原理图一行,每个架子一行。

这似乎更适合你想做的事情。