gpt4 book ai didi

mysql - 在mysql中实现多对多关系

转载 作者:可可西里 更新时间:2023-11-01 07:38:45 25 4
gpt4 key购买 nike

我有两个表

1.矩形(rectId, xPos, yPos, height, width)

2.规模(scaleId,someothercols ...)

现在矩形中的每一列都可以关联“0 到 1”的比例。

即 xPos 可以有一个比例尺,yPos 可以有一个比例尺等等。所以一般来说,一个矩形可以有多个尺度。

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

一个比例尺也可以被多个矩形引用。

在sql中实现这个的最好方法是什么

我想到的方法是有一个连接表 Rectangle_scale 和 rect_column 属性 exg :

矩形比例尺

| rectScaleId | rectId      | scaleId      | rect_col(string)|
|:----------- |------------:|:------------:|---------------- |
| 1 | 1 | 2 | Xpos |
| 2 | 1 | 3 | Ypos |
| 3 | 2 | 2 | Height |

这样做正确吗?我还需要 rectScaleId col ,还是应该使用 rectId 和 scaleId 作为复合主键

此外,要提到的与问题没有直接关系的事情,我正在使用 Eloquent 的 Laravel 5.2 框架,不一定是必需的,但是遵守 Laravel Eloquent 限制的解决方案会很好。

最佳答案

如您所说,实现多对多关系需要一个连接表。

因此,根据您的问题,rectange 表和 scale 表之间的关系基本上是存在的。

我们需要表具有的属性:

  • 每个比例都可以根据任何现有矩形的需要引用
  • 每个矩形都可以关联超过一个尺度

这可以通过如下创建表来完成:

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

关于mysql - 在mysql中实现多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40140196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com