mysql 多对多_在mysql中实现多对多的关系

我有两张桌子

1.Rectangle(rectId,xPos,yPos,height,width)

2.Scale(scaleId,someothercols ……)

现在,矩形中的每个列都可以具有与之关联的“0到1”比例.

即xPos可以有比例,yPos可以有比例等等.因此,通常一个矩形可以有多个刻度.

此外,所有上述列也可以没有比例参考,在这种情况下,它们将具有静态值,即xPos = 50,yPos = 60等等.

缩放也可以由多个矩形引用.

在sql中实现它的最佳方法是什么

我想到的方法是使用带有rect_column属性e​​xg的联结表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上创建了一个演示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值