gpt4 book ai didi

mysql - 数据库表中的行限制

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:10 24 4
gpt4 key购买 nike

我有三个表:

BallId  Color

ball_1 red
ball_2 red
ball_3 blue
ball_4 green
ball_5 green

.......

.

BoxId  Color

box_1 green
box_2 green
box_3 red
.......

.

BoxId  BallId

box_1 ball4
box_1 ball5
box_3 ball2

我想在 BoxId,BallId 表上强制颜色关系,是否可以示意性地实现?

最佳答案

我不太确定您的最终目标是什么。

如果您只是想确保底部表格中的 BoxIdBallId 必须存在于顶部两个表格中,那么您可以使用 FOREIGN KEY(又名“参照完整性”)。

--- 编辑 ---

根据其他评论/回复,我看到您实际上想要确保通过第三个表连接的 2 行始终具有相同的颜色,但断开连接的行仍然可以具有自己的颜色。

如果是这样,那么您可以像这样“滥用”键:

Ball:
BallId PK, AK1
Color AK1

Box:
BoxId PK, AK1
Color AK1

BallInBox
BallId PK
BoxId PK
Color
FK (BallId, Color) references Ball
FK (BoxId, Color) references Box

这是实际的 DDL SQL:

delimiter $$

CREATE TABLE Ball (
BallId varchar(45) NOT NULL,
Color varchar(45),
PRIMARY KEY (BallId),
UNIQUE KEY Ball_AK1 (BallId, Color)
)$$

CREATE TABLE Box (
BoxId varchar(45) NOT NULL,
Color varchar(45),
PRIMARY KEY (BoxId),
UNIQUE KEY Box_AK1 (BoxId, Color)
)$$

CREATE TABLE BallInBox (
BallId varchar(45) NOT NULL,
BoxId varchar(45) NOT NULL,
Color varchar(45),
PRIMARY KEY (BallId, BoxId),
CONSTRAINT BallInBox_FK1 FOREIGN KEY (BallId, Color) REFERENCES Ball (BallId, Color),
CONSTRAINT BallInBox_FK2 FOREIGN KEY (BoxId, Color) REFERENCES Box (BoxId, Color)
)$$

顺便说一句,这允许在“基本”表和“连接”表中使用 NULL 颜色。如果这不是您想要的,很容易添加 NOT NULL 约束。

关于mysql - 数据库表中的行限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7805556/

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