我有两张桌子
1.Rectangle(rectId,xPos,yPos,height,width)
2.Scale(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框架具有雄辩,不一定是必需的,但是坚持Laravel雄辩的限制的解决方案会很好.
最佳答案 如你所说,实现多对多关系需要一个连接表.
所以根据你的问题,这种关系基本上是在矩形表和比例表之间.
我们需要表格的属性:
>任何现有的矩形都可以根据需要引用每个比例
>每个矩形都可以与多个比例相关联
这可以通过创建表来完成,如下所示:
create table rectangle (
rectID int primary key auto_increment,
xPos int,
yPos int,
height int,
width int)ENGINE = Innodb;
create table scale (
scaleID int primary key auto_increment,
descr text )ENGINE = Innodb;
create table rect_scale (
scale int not null,
rect int ,
rect_col varchar(100),
primary key (scale,rect),
foreign key(scale) references scale(scaleID),
foreign key(rect) references rectangle(rectID)
)ENGINE = Innodb;
我还在SQLFiddle:here上创建了一个演示