mysql 候选键_mysql-外键可以是同一表中的候选键吗?

我将尝试通过一个例子来解释这种情况:

我有2个表A和B,它们之间是“一对多”关系,B由单个键(pk_B)标识,A由几个键(pk_A1和pk_A2)标识.因此,我们有两个表:

B(pk_B, attr1, attr2, attr3);

A(pk_A1, pk_A2, attr1, attr2, fk_B);

由于某些原因,A表中的fk_B可以是这对主键的一部分,因此主键为

pk_A1 + pk_A2 + fk_B.

有可能吗

如果我太普通了,我很抱歉.如果您愿意,我可以尝试通过一个具体的例子更清楚地说明情况.

更新:

我有两个表,“ Room”和“ Area”,处于“一对多”关系(1个房间,N个区域; 1个区域,1个房间).房间是建筑物的内部环境,由墙壁分隔;面积只是空间的一部分.

房间由一个主键(Room_ID)标识;区域由几个键标识:坐标_X坐标_Y.

为了给出更具体的示例,我添加了一个名为ID的第三个表,称为“对象”.一个对象可以放置在N个区域中,在一个区域中我可以放置一个对象.因此,我们有三个表:

Room (Room_ID, temperature, capacity)

Area(coordinate_X, coordinate_Y, dimension, FK_Room_ID, FK_Object_ID)

Object(Object_ID, name, weight, size)

现在,如果您想一想,我们有N个区域,则每个区域都可以通过坐标X&是,但是如果我们说在每个区域中都可以有一个对象,那么如果我在一个区域中放置一个对象并不意味着所有具有特定区域的房间都放置了一个对象,这不好;因为我需要区分区域X = 1&在房间A中Y = 1,而区域X = 1& A. Y =房间B中的Y = 1.因此,我必须做一个包含三个属性的主键:X坐标Y坐标房间ID(因此,当我将一个对象添加到区域时,我需要指定X坐标,即Y坐标和我要放置对象的房间).

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值