【发布时间】:2016-10-19 19:41:35
【问题描述】:
我有两张桌子
1.矩形(rectId , xPos , yPos , height , width)
2.比例(scaleId , someothercols...)
现在矩形中的每一列都可以有 '0 到 1' 的比例。
即 xPos 可以有刻度,yPos 可以有刻度等等。所以一般来说,一个矩形可以有多个比例。
此外,上述所有列也可以没有比例参考,在这种情况下,它们将具有静态值,即 xPos=50,yPos=60 等等..
此外,一个比例尺可以被多个矩形引用。
在sql中实现这个的最好方法是什么
我想到的方法是有一个带有 rect_column 属性 exg 的连接表 Rectangle_scale :
Rectangle_scale
| rectScaleId | rectId | scaleId | rect_col(string)|
|:----------- |------------:|:------------:|---------------- |
| 1 | 1 | 2 | Xpos |
| 2 | 1 | 3 | Ypos |
| 3 | 2 | 2 | Height |
这是正确的方法吗?我还需要 rectScaleId col 还是应该使用 rectId 和 scaleId 作为复合主键
另外,提一下与问题没有直接关系的东西,我用的是Laravel 5.2框架和eloquent,不是必须的,但是坚持Laravel eloquent限制的解决方案会很好。
【问题讨论】:
-
我认为你这里的设置很好。我也喜欢在每个表中都有一个 ID 列。从技术上讲,您不必在 rectangle_scale 中有一个,但我认为它可以更轻松地从该表中更新/删除记录。
-
那是一个不错的选择我也建议你使用coupe引用的矩形id和引用的比例id作为连接表的主键,有rectScaleId列是多余的,考虑每一个可能的选择即使一个矩形必须有多个比例,两个 id 的并集总是唯一的。